2017-10-17 12 views
0

Ici je suis coincé avec mon travail parce que je peux télécharger seulement le petit dossier de taille de kb à un lecteur qui n'est pas assez. Comment puis-je télécharger de gros fichiers sur un disque en utilisant Sdk. Maintenant, j'utilise ce projet exemple. Télécharger des fichiers volumineux sur un lecteur pour oneDrive iOS SDK?

Ici, le téléchargement est affiché uniquement pour les images et les fichiers kb de petite taille vers onedrive. Comment pouvons-nous télécharger de gros fichiers en utilisant Session ?.

func uploadFileToOneDrive(fileName : String,fileId : String, filePath : String){ 
    print("filePath \(filePath)") 
    do { 
     let fileData = try! Data(contentsOf: NSURL(fileURLWithPath: filePath) as URL) 
     let fileLength = UInt64(fileData.count) 
     print(fileLength) 
     graphClient.me().drive().items(fileId + ":/createUploadSession").contentRequest().upload(from: fileData, completion: { 
      (updatedItem, error) in 
      if let nsError = error { 
       self.delegate?.errorHandling(error: nsError.localizedDescription) 
      } 
      else { 
       self.delegate?.Success(Sucess: NSLocalizedString("Uploaded", comment: "")) 
       self.oneDriveListFiles(path: fileId, folderId: fileId, isBack: true) 
      } 

      print(self.progress.fractionCompleted) 
     }) 
    } 
} 

m'aident aussi à faire avec la barre de progression pour télécharger et télécharger?.

Répondre

0

solution est ici à la fois le téléchargement d'images et d'une bibliothèque show télécharger progress.AFNetworking sera utilisé ici:

- (void)uploadImageToServer{ 

    NSData *imageData = UIImageJPEGRepresentation(_uploadImage, 0.5); 

    NSString *urlString = @"<YOUR URL>; 

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 

manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
    [manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [manager POST:urlString parameters:_param constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 

     [formData appendPartWithFileData:imageData name:@"uploaded_file" fileName:@"uploaded_file.jpg" mimeType:@"image/jpeg"]; 

    } progress:^(NSProgress * _Nonnull uploadProgress) { 
     [manager setTaskDidSendBodyDataBlock:^(NSURLSession *session, NSURLSessionTask *task, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) { 
      float processbar = (float)totalBytesWritten/(float)totalBytesExpectedToWrite; 
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 
       //do something 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        _progressView.progress = processbar; 
        _lblProgressPercentage.text = [NSString stringWithFormat:@"%.0f%%",(processbar*100)]; 

       }); 
       //do something else 
      }); 
     }]; 

    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 


    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
     NSLog(@"Error: %@", error); 

    }]; 
} 
+0

Merci pour les commentaires. En fait, j'ai besoin de télécharger de gros fichiers .pdf pas réellement des images. maintenant j'utilise SDK onedrive. Et j'ai besoin de code rapide :) –