如何使用发布请求发送多个文件? (objective-c,iOS)

时间:2010-07-05 08:42:00

标签: iphone objective-c post request ios4

我想发送帖子请求,但我需要发送多个文件, 怎么做?

TNX

2 个答案:

答案 0 :(得分:2)

使用众多资源中的一个来介绍如何为POST数据配置NSMutableURLRequest。 Content-Type标题应为“multipart / form-data”,每个文件将依次与适当的部分标题连接在一起。 RFC2388是相关标准。

答案 1 :(得分:2)

您必须为要上传的不同图像创建边界。让我一步一步解释。 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. 现在我们的数据准备好了。我们只需将此附加到请求正文中。