В настоящее время я использую следующий код для загрузки файлов на сервер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
I Believe это означает, что приложение не может получить доступ к файлу по указанному пути. Также я попытался загрузить альтернативный подход, добавив NSData, который возвращается из запроса данных PHAsset. но этот подход непригоден для больших файлов мультимедиа. так как весь файл загружается в память.
Любые мысли?