gpt4 book ai didi

swift - 将大文件上传到 oneDrive iOS SDK 的一个驱动器?

转载 作者:行者123 更新时间:2023-11-30 12:04:56 24 4
gpt4 key购买 nike

在这里,我的工作陷入困境,因为我只能将小 kb 大小的文件上传到一个驱动器,这是不够的。如何使用 Sdk 将大文件上传到一个驱动器。现在我正在使用这个示例项目。 https://github.com/microsoftgraph/ios-swift-snippets-sample

此处仅显示将图像和小尺寸 kb 文件上传到 onedrive。我们如何使用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)
})
}
}

还帮我做一下上传和下载的进度条吗?

最佳答案

这是图像上传和显示下载进度的解决方案。此处将使用 AFNetworking 库:

- (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);

}];
}

关于swift - 将大文件上传到 oneDrive iOS SDK 的一个驱动器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com