NSURLConnection图像上传到服务器错误

问题描述:

快速问题。NSURLConnection图像上传到服务器错误

我试图做同样的Curl功能描述

curl -v -F [email protected]/home/user/Downloads/test.jpg “http://...:8088/upload?session=(blabla)&conv=(blabla)" 

出于某种原因,我的所有上传失败了。这是我的代码。

// create request 

static NSString *boundary = @"---------------------------14737809831466499882746641449"; 
NSData *imageData = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]; 

NSMutableURLRequest *request; 
request= [[NSMutableURLRequest alloc] init]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[request setHTTPShouldHandleCookies:NO]; 
[request setTimeoutInterval:30]; 
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@:8088/upload?session=%@&conv=%@", kQAServer, session , conv]]]; 
[request setHTTPMethod:@"POST"]; 


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

// add image data 
NSMutableData *postbody = [NSMutableData data]; 
[postbody appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"content\"; \r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:imageData]; 
[postbody appendData:[[NSString stringWithFormat:@"--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:postbody]; 


NSURLResponse * response = nil; 
NSError * error = nil; 
NSData * data = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&response 
                error:&error]; 

if (error == nil) 
{ 
    NSString *fileID = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    return fileID; 
} 

return nil; 
+0

可能重复(http://*.com/ question/8564833/ios-upload-image-and-text-using-http-post) – Legolas

不要使用error == nil检查,如果命令成功。该命令可以在没有错误的情况下失败,并且可以成功执行一个。 (这被记录为错误的整个伪协议的一部分。)

而是只是检查你是否有数据。如果data == nil那么你有一个硬错误,你应该记录错误。

(如果你确实有数据==为零,请张贴错误,我们可以提供帮助。)的[IOS上传图片和文字使用HTTP POST]

+0

数据不是零。这是无效的。意思上传失败 – Legolas

+0

好的,有什么错误?数据是什么?它是HTML吗? –

+0

没有错误。数据是“意外的” – Legolas