PHAsset + AFNetworking. Невозможно загрузить файлы на сервер на реальном устройстве
В настоящее время я использую следующий код для загрузки файлов на сервер
NSURLRequest *urlRequest = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[[entity uploadUrl]absoluteString] parameters:entity.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// Get file url
[UploadModel getAassetUrl:entity.asset resultHandler:^(NSURL *fileUrl) {
NSError *fileappenderror;
// Append
[formData appendPartWithFileURL:fileUrl name:@"data" error:&fileappenderror];
if (fileappenderror) {
[Sys MyLog: [fileappenderror localizedDescription] ];
}
}];
} error:&urlRequestError];
/ * getAassetUrl * /
+(void)getAassetUrl: (PHAsset*)mPhasset resultHandler:(void(^)(NSURL *imageUrl))dataResponse{
PHImageRequestOptions * requestOption = [[PHImageRequestOptions alloc] init];
requestOption.synchronous = YES;
requestOption.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
[[PHImageManager defaultManager] requestImageDataForAsset:mPhasset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
dataResponse([info objectForKey:@"PHImageFileURLKey"]);
}];
}
Этот подход работает на симуляторе, но не работает на реальном устройстве: пустые файлы загружаются на сервер, скорее всего, из-за невозможности чтения из локального хранилища. Журнал показывает уведомление
Примечание: Песочница: MyApp (213) запрещает чтение данных файла /private/var/mobile/Media/DCIM/101APPLE/IMG_1570.PNG
Я считаю, что это примечание означает, что приложение не может получить доступ к файлу по указанному пути. Также я попробовал альтернативный подход к загрузке файла, добавив NSData, который возвращается из данных PHAsset запроса. но этот подход неприменим в случае больших медиа-файлов. так как весь файл загружается в память.
Какие-нибудь мысли?