如何使用 UIDocumentPickerViewController 获取原始文件名?

Posted

技术标签:

【中文标题】如何使用 UIDocumentPickerViewController 获取原始文件名?【英文标题】:How can i get the original file name using UIDocumentPickerViewController? 【发布时间】:2018-10-29 14:19:03 【问题描述】:

我需要知道要导入的文件类型。 我可以从文件名中找出类型

对于 PHAsset,您可以使用以下方法:

Attachment *attachment = [[Attachment alloc] init];
                         attachment.assetIdentifierInternal = asset.localIdentifier;
                         attachment.descriptionInfo = [[NSProcessInfo processInfo] globallyUniqueString];
                         attachment.isPhoto = YES;
                         attachment.isDocument = NO;

 NSArray *resources = [PHAssetResource assetResourcesForAsset:asset];
 NSString *fileName = ((PHAssetResource *)resources[0]).originalFilename;
  attachment.format = [fileName pathExtension];

DocumentPicker 有什么类似的吗?

descriptInfo 显示没有问题。名称 - 无。

名称的设置器:

- (void)setName:(NSString *)name 

_name = name;

self.format = [name pathExtension];

CFStringRef fileExtension = (__bridge CFStringRef) self.format;
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);

self.isPhoto = UTTypeConformsTo(fileUTI, kUTTypeImage);
self.isDocument = UTTypeConformsTo(fileUTI, kUTTypeData); 

【问题讨论】:

【参考方案1】:

经过一番搜索,我自己找到了解决方案。 名称和格式很容易通过 URL 跟踪。像这样

    attachment.fileUrlInternal = url;
    attachment.format = [attachment.fileUrlInternal pathExtension];
    attachment.name = url.lastPathComponent;

【讨论】:

以上是关于如何使用 UIDocumentPickerViewController 获取原始文件名?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?