Как загрузить 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
        }
    })

Надеюсь, это поможет.

Другие вопросы по тегам