Ios 如何上传PHAsset(仅视频和图像)?
我想上传PHAsset,但我没有资产的文件路径。我能够上传文件使用下面的块方法。但这些都是获取URL的异步方法。是否有任何同步方法或任何其他方式来上载PHAsset文件 图像资源URL:Ios 如何上传PHAsset(仅视频和图像)?,ios,objective-c,phasset,Ios,Objective C,Phasset,我想上传PHAsset,但我没有资产的文件路径。我能够上传文件使用下面的块方法。但这些都是获取URL的异步方法。是否有任何同步方法或任何其他方式来上载PHAsset文件 图像资源URL: [asset requestContentEditingInputWithOptions:editOptions completionHandler:^(PHContentEditingInput *contentEditingInput, NSDi
[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];
}];
我正在从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
}
})
希望有帮助 我们必须处理这些异步方法。并考虑URL为零的文件。这样的文件不会出现在本地设备上,而是出现在iCloud上。谢谢,这对我很有帮助。我也这么认为。原因是该应用程序在沙箱中运行,您无法真正更改或直接从照片文件夹复制。我找了很多地方,但都是这样。您必须创建一个本地副本并使用它。