【发布时间】:2012-12-26 14:49:30
【问题描述】:
我必须将图片上传到特定的网址。我必须遵循的规范是: 1.方法应该是post 2. 图片必须使用多部分 HTTP 内容类型上传 3. HTTP 字段的名称应为“uploadingTheFile”。 4. 多部分数据应该有文件名。 5.图片内容类型应在以下-jpeg,jpg,png,gif之间
我想使用 NSURLConnection 异步上传。我认为我无法以正确的方式设置请求中的参数。我得到的状态代码为 200,这表明我的 NSURLConnection 委托方法没有问题。我正在尝试的代码是:
NSString *stringBoundary=@"0xKhTmLbOuNdArY";
// create request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:url]];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary] forHTTPHeaderField:@"uploadfile"];
NSMutableData *postBody = [NSMutableData data];
NSData *imageData=UIImagePNGRepresentation([UIImage imageNamed:@"IMG_0215.JPG"]);
//[postBody appendData:imageData];
[postBody appendData:[@"Content-Disposition: form-data; name=\"data;filename=\"media.png\"\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[NSData dataWithData:imageData]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postBody];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
if (connection) {
self.data = [NSMutableData data];
}
【问题讨论】:
-
为什么不试试 ASIHttpRequest 方法,它有内置的类可以异步发送数据.....
-
我处于应用程序完成的后期阶段。现在我想不出只为一项任务使用 ASIHTTP 或其他库。这就是为什么 Gill 不能尝试 ASIHTTP
-
ASIHttpRequest 不再更新,因此您不能在支持 ARC 的情况下使用它
标签: iphone objective-c ios