如何在UIImagePickerController
的委托方法中获取从相机胶卷或任何其他相册中选择的视频文件的名称?
我能够获得图像的名称,但如果在视频中使用相同的图像则返回nil
。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if (![mediaType isEqualToString:(NSString *)kUTTypeMovie])
return;
mediaURl = [info objectForKey:UIImagePickerControllerMediaURL];
//NSLog(@"mediaURL %@",mediaURl);
moviePath = mediaURl.absoluteString;
// NSLog(@"moviePath %@",moviePath);
tempFilePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
NSLog(@"filepath %@",tempFilePath);
//if you want only file name
NSArray *ar = [tempFilePath componentsSeparatedByString:@"/"];
NSString *filename = [[ar lastObject] uppercaseString];
NSLog(@"filename %@",filename);
}
如果您有任何问题,请告诉我
我知道这个帖子超级老了,但我想如果有人发现它,这里是一个快速的工作答案:
func fileName(for infoDict: [String : Any]) -> String? {
guard let referenceURL = infoDict[UIImagePickerControllerReferenceURL] as? URL else { return nil }
let result = PHAsset.fetchAssets(withALAssetURLs: [referenceURL], options: nil)
guard let asset = result.firstObject else { return nil }
let firstResource = PHAssetResource.assetResources(for: asset).first
return firstResource?.originalFilename ?? asset.value(forKey: "filename") as? String
}
Swift 4或更高版本在我的身边工作以获取捕获的图像
使用 :
imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
let fileName = FileInfo.getMediaName(info: info)
}
class:请求放置方法info [:]
class FileInfo {
// Return Media name
static func getMediaName(info:[String : Any]) -> String {
if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
let assetResources = PHAssetResource.assetResources(for: asset)
let firstObj = assetResources.first?.originalFilename as! NSString
print(firstObj)
return firstObj
}
}
}
// IMG_02256.jpeg