我想发送帖子请求,但我需要发送多个文件, 怎么做?
TNX
答案 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"];
创建上面的字典时,可以为请求创建正文部分。
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]];
}
添加所有图像后。我们必须以最终边界结束。
[finalPostData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
现在我们的数据准备好了。我们只需将此附加到请求正文中。