Как отправить несколько файлов с помощью почтового запроса?(цель-c, iOS) - PullRequest
1 голос
/ 05 июля 2010

Я хочу отправить запрос, но мне нужно отправить несколько файлов, как это сделать?

Тпй

Ответы [ 2 ]

2 голосов
/ 27 июля 2015

Вы должны создать границы для разных изображений, которые будут загружены. Позвольте мне объяснить шаг за шагом. 1. Преобразуйте свои изображения в NSData и добавьте их в словарь.

    UIImage *image1 = [UIImage imageNamed:@"imageName"];        
    UIImage *image2 = [UIImage imageNamed:@"imageName"];       
    UIImage *image3 = [UIImage imageNamed:@"imageName"];

    NSMutableDictionary *imageDataDictionary = [[NSMutableDictionary alloc] init];
    [imageDataDictionary setObject:UIImagePNGRepresentation(image1) forKey:@"image"];
    [imageDataDictionary setObject:UIImagePNGRepresentation(image2) forKey:@"image"];
    [imageDataDictionary setObject:UIImagePNGRepresentation(image3) forKey:@"image"];
  1. Когда вы создали вышеупомянутый словарь, самое время создать часть тела для запроса.

    NSMUtableData *finalPostData = [[NSMutableData alloc] init];
    NSString *boundary = @"0xKhTmLbOuNdArY";
    NSString *endBoundary = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary];
    [finalPostData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
    contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
    
    for(NSString *key in imageDataDictionary)
    {
       imageData = [imageDataDictionary objectForKey:key];
       [finalPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
       [finalPostData appendData:[@"Content-Disposition: form-data; name=\"upload\"; filename=\"image.png\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
       [finalPostData appendData:[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
       [finalPostData appendData:[NSData dataWithData:imageData]];
       [finalPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    }
    
  2. Когда все изображения добавлены. Мы должны закончить с окончательной границей.

    [finalPostData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    
  3. Теперь наши данные готовы. Мы просто должны добавить это к телу запроса.

2 голосов
/ 05 июля 2010

Используйте один из множества ресурсов о том, как настроить NSMutableURLRequest для данных POSTing. Заголовок Content-Type должен быть «multipart / form-data», и каждый файл будет по очереди объединен с соответствующим заголовком части. RFC2388 является соответствующим стандартом.

...