@Arhimed96

Как отправить 10 файлов?

Доброго времени суток!
Есть код в php, который берет из массива $_FILES['uploads'] данные и загружает на сервер. В HTML с помощью такой формы:
...
<input type="file" name="upload[]">
...

все отлично загружается.
Как реализовать отправку в iOS на Objective-C?
Пробовал разные коды из просторов интернета, ничего путного не получилось.
Если приходилось так отправлять в ваших проектах, мне бы готовый код, спасибо)
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
briahas
@briahas
ObjC, Swift, Python
Совершенно не понятно что именно вы пробовали, и что именно у вас не получилось, и при чем тут PHP.

Вопрос сформулирован слишком обще. Скорректируте его пожалуйста.
Ответ написан
Комментировать
@i_allar
библиотека AFNetworking, у меня mime type стоит image, погуглите какие они бывают и поставте file type, name:@"avatar" - поле на серваке в которое вы данные сохраняете

- (NSURLSessionDataTask *)saveAvatar:(UIImage *)image withCompletion:(CompletionWithErrorBlock)completion {
NSString *apiPath = [NSString stringWithFormat:@"%@/api/avatars", [self currentHost]];

AFHTTPSessionManager *manager = [self getManager];
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);

NSString *token = [NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults]objectForKey:kCurrentToken]];

if(!token.length)
{
completion([NSError errorWithDomain:@"saveAvatar:" code:-33002 userInfo:@{@"Error":@"token from NSUserDefaults is nil"}]);
return nil;
}

NSDictionary *dict = @{@"access_token":token
};

NSNumber *userId = [[NSUserDefaults standardUserDefaults] objectForKey:kAuthorizedUserId];
__block NSString *imageName = [NSString stringWithFormat:@"avatarForUserWithId:%@",userId];
__block typeof(UIImage) *imageInstance = image;
__weak typeof(self) selfInstance = self;

NSURLSessionDataTask *task = [manager POST:apiPath
parameters:dict
constructingBodyWithBlock:^(id _Nonnull formData) {
[formData appendPartWithFileData:imageData name:@"avatar" fileName:imageName mimeType:@"image/jpeg"]; // avarar - name of field in database on server
}
progress:^(NSProgress * _Nonnull uploadProgress)
{
}
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
completion(nil);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
{
[selfInstance reloginWithCompletion:^(NSError *error) {
if (error) {
completion(error);
return;
}
[selfInstance saveAvatar:imageInstance withCompletion:completion];
}];
}];

return task;
}

- (AFHTTPSessionManager *)getManager {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"image/jpeg", @"image/gif", @"image/png", @"multipart/form-data", nil];

manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSString *token = [NSString stringWithFormat:@"Bearer %@", [[NSUserDefaults standardUserDefaults]objectForKey:kCurrentToken]];
[manager.requestSerializer setValue:token forHTTPHeaderField:@"Authorization"];

[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

return manager;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы