【发布时间】:2013-12-10 07:08:27
【问题描述】:
我尝试AFNetworking 的“创建上传任务”和this 将图像上传到.net 服务器,但不能。这是我尝试过的。
- (void)uploadJPEGImage:(NSString*)requestURL image:(UIImage*)image
{
NSURL *url = [[NSURL alloc] initWithString:requestURL];
NSMutableURLRequest *urequest = [NSMutableURLRequest requestWithURL:url];
[urequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[urequest setHTTPShouldHandleCookies:NO];
[urequest setTimeoutInterval:60];
[urequest setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[urequest setValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
// add image data
NSData *imageData = UIImageJPEGRepresentation(qrCodeImage.image, 1.0);
if (imageData) {
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
//[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", pictureName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[urequest setHTTPBody:body];
NSLog(@"Check response if image was uploaded after this log");
//return and test
NSData *returnData = [NSURLConnection sendSynchronousRequest:urequest returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);
}
由于AFNetworking代码给出,我this尽管添加了运行时错误
self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", @"text/html", nil];
谢谢。
【问题讨论】:
-
代码中有一行注释掉了,它在数据中添加了
Content-Disposition行。您在执行多部分帖子时需要它,因此请取消注释。 -
我把它注释掉了,因为我已经在应用程序本身中生成了二维码,因此图像不会有任何路径。
-
您需要在多部分有效负载中包含该行。这很关键。该行中的
name值是参数名称,而不是文件路径,例如image或photo. -
我添加了imageView.image而不是pictureName,但是得到了网页的html响应。我如何检查图像是否上传到提到的 url,因为我期待 {"imageurl":"trivetts.iconnectgroup.com/uploads/TruckTrackUpload/…"} 响应
-
Content-Disposition行需要读作[body appendData:[@"Content-Disposition: form-data; name=\"FileUpload1\" filename=\"image.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
标签: ios web-services http-post