調(diào)用系統(tǒng)文件夾主要用到了UIDocumentPicker捕透,上傳文件使用AFNetWorking
1.首先接受<UIDocumentPickerDelegate>
2.在點(diǎn)擊事件中加入
//文件類型
NSArray *documentTypes = @[@"public.content", @"public.text", @"public.source-code ", @"public.image", @"public.audiovisual-content", @"com.adobe.pdf", @"com.apple.keynote.key", @"com.microsoft.word.doc", @"com.microsoft.excel.xls", @"com.microsoft.powerpoint.ppt"];
UIDocumentPickerViewController *documentPickerViewController = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes inMode:UIDocumentPickerModeOpen];
documentPickerViewController.delegate = self;
[[self viewController] presentViewController:documentPickerViewController animated:YES completion:nil];
3.在UIDocumentPickerDelegate中處理回調(diào)事件
-(void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url
{
NSArray *array = [[url absoluteString] componentsSeparatedByString:@"/"];
NSString *fileName = [array lastObject];
fileName = [fileName stringByRemovingPercentEncoding];
NSArray *fileArray=[fileName componentsSeparatedByString:@"."];
//判斷URL是否能找到香嗓,如果直接用url很可能找不到對(duì)應(yīng)的文件
BOOL canAccessingResource = [url startAccessingSecurityScopedResource];
if(canAccessingResource) {
NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init];
NSError *error;
[fileCoordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {
NSData *fileData = [NSData dataWithContentsOfURL:newURL];
//上傳文件
NSString *urlString2=@“”;
[manager POST:urlString2 parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//這里面可以追加參數(shù)或者上傳的文件
[formData appendPartWithFileData:fileData name:@"file" fileName:fileArray.firstObject mimeType:[NSString stringWithFormat:@"file/%@",fileArray.lastObject]];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
}];
if (error) {
// error handing
}
} else {
// startAccessingSecurityScopedResource fail
}
// [url stopAccessingSecurityScopedResource];
}