Как загрузить PHAsset (только видео и изображение)?
Я хочу загрузить PHAsset, но у меня нет пути к файлу актива. Я могу загрузить файл, используя методы блока ниже. Но это асинхронные методы для получения URL. Существует ли какой-либо синхронный метод для этого или любой другой способ загрузки файлов PHAsset.
URL ресурса изображения:
[asset requestContentEditingInputWithOptions:editOptions
completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
NSURL *imageURL = contentEditingInput.fullSizeImageURL;
}];
URL видеофайла:
[[PHImageManager defaultManager]requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
NSURL *url = (NSURL *)[[(AVURLAsset *)asset URL] fileReferenceURL];
}];
1 ответ
Я извлекаю видео из PHAsset и сохраняю его в локальный путь к файлу, чтобы загрузить его на сервер: вот следующий код:
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate",ascending:false)]
assets = PHAsset.fetchAssets(with:fetchOptions)
let resourceManager = PHAssetResourceManager.default()
let resource = PHAssetResource.assetResources(for: asset).first!
let name = resource.originalFilename
let videoLocalPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)
//Storing the resource to local temporary path
resourceManager.writeData(for: resource, toFile: videoLocalPath, options: nil, completionHandler: {error in
if error != nil{
// on success do the upload using the local file path
}
})
Надеюсь, это поможет.