2012-12-26 55 views
0

我必須上傳圖片到一個特定的網址。我必須遵循的規格如下: 1.方法應爲 2.圖像必須使用多部分HTTP內容類型上傳 3. HTTP字段的名稱應該是「uploadingTheFile」。 4.多部分數據將具有文件名。 5.圖像內容類型應該在以下 - jpeg,jpg,png,gif如何使用發佈請求異步上傳圖片到網址?

我想上傳使用NSURLConnection異步。我想我無法以正確的方式在請求中設置參數。我將狀態碼設置爲200,這表明我的NSURLConnection委託方法沒有問題。我試圖的代碼是:

NSString *[email protected]"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]; 
} 
+0

你爲什麼不嘗試ASIHttpRequest方法,它已經從該數據可以異步發送內置類..... – IronManGill

+0

我正處於應用程序完成的後期階段。現在我無法想到僅僅爲一項任務使用ASIHTTP或其他庫。這就是爲什麼吉爾不能嘗試ASIHTTP –

+0

ASIHttpRequest不再更新,所以你不能使用它與ARC支持 – Hayro

回答

3

我正在使用下面的代碼,它對我來說工作正常。

NSData *imageData = UIImageJPEGRepresentation(empImgView.image, 90); // convert image in NSData 
    NSString *urlString = @"http://abc.com/saveimage/Default.aspx"; // your url 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 

    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSString *imgNameString = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n",[responseSrting substringWithRange:NSMakeRange(1, responseSrting.length - 2)]];  
    [body appendData:[[NSString stringWithString:imgNameString] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [request setHTTPBody:body]; 

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",returnString); 
+1

他要求異步的方式做到這一點 – Hayro

相關問題