使用PHPickerViewController拍摄照片时如何获取文件名

How to get filename when using PHPickerViewController for photo

使用 PHPickerViewController 拍摄照片时如何获取文件名

这是我的功能代码

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        
        dismiss(animated: true, completion: nil)
        
        for item in results {
            item.itemProvider.loadObject(ofClass: UIImage.self) {(image, error) in
                if let image = image as? UIImage{

   
                }
                
            }
        }
    }

请帮忙,谢谢

希望你能用这个找到文件名:

item.itemProvider.loadFileRepresentation(forTypeIdentifier: "public.item") { (url, error) in
                if error != nil {
                   print("error \(error!)");
                } else {
                    if let url = url {
                        let filename = url.lastPathComponent;
                        print(filename)
                    }
                }
            }

您可以使用它从 UIImagePickerController

中获取文件名
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let imageURL = info[UIImagePickerControllerReferenceURL] as? URL {
        let result = PHAsset.fetchAssets(withALAssetURLs: [imageURL], options: nil)
        let asset = result.firstObject
        print(asset?.value(forKey: "filename"))

    }

    dismiss(animated: true, completion: nil)
}

PHPickerResult 中的 NSItemProvider 有一个 suggestedName 属性 可以给你文件名。因此,根据您提供的代码:

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        
    dismiss(animated: true, completion: nil)
        
    for item in results {
        item.itemProvider.loadObject(ofClass: UIImage.self) {(image, error) in
            // This will give you the file name
            guard let fileName = item.itemProvider.suggestedName else { return }
            if let image = image as? UIImage{
   
            }
        }
    }
}