使用iPhone sdk上传png格式的图像

使用iPhone sdk上传png格式的图像,iphone,objective-c,post,httpwebrequest,Iphone,Objective C,Post,Httpwebrequest,我想上传一个png格式的图像到服务器上,我必须给出三个参数,分别是 transactionID:(任意随机整数) 签名字节:数据:图像/png;base64,IVBORW0KGGOAAAAASADFSFDFYAAAAEGRPOAAGAGAELEQVR4NO2DE5BMRXNGHZWMYKKVKUQJRK0ERWRWDS55/lVnT/mm+87/Z4+3f30+/YN6D9L48CMA9VxnOJ9S guid:CAD1CBE7-B5A4-43d6-BCDD-89B16F97E3C4 我使用

我想上传一个png格式的图像到服务器上,我必须给出三个参数,分别是

  • transactionID:(任意随机整数)

  • 签名字节:数据:图像/png;base64,IVBORW0KGGOAAAAASADFSFDFYAAAAEGRPOAAGAGAELEQVR4NO2DE5BMRXNGHZWMYKKVKUQJRK0ERWRWDS55/lVnT/mm+87/Z4+3f30+/YN6D9L48CMA9VxnOJ9S

  • guid:CAD1CBE7-B5A4-43d6-BCDD-89B16F97E3C4

我使用了以下代码:

NSData *imageData = UIImageJPEGRepresentation(image.image,90);

// setting up the URL to post to


NSString *urlString=@"http://www.riverport.net/icalibur/dev/signature.ashx";

// setting up the request object now
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[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]];

[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"transactionID\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[[NSString stringWithString:@"7" intva] dataUsingEncoding:NSUTF8StringEncoding]];


  [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"signatureBytes\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"data:image/png;base64,iVBUaBCrFDXGSIECEXEFdUFEhEVAluXmsrrtrrttrrqddcsvrgergergg/YN6D9L4uozc5h+nsWsFhGSn88CWAAwqV2ynoz1qvJjYTmfCOk1QxJ0ANgHijoZDy8CMA9VxnOJ9S"] dataUsingEncoding:NSUTF8StringEncoding]];


[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"guid\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"CHJ78G-B5A4-43d6-BCDD-CFG567FGJ"] dataUsingEncoding:NSUTF8StringEncoding]];


[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.png\"\r\n"] 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]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];


NSString* returns= [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];



//NSLog(@"body %@",stri);


// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(returnString);
来自服务器的响应是:

[FormatException: Input string was not in a correct format.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) +201
   Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) +66

[InvalidCastException: Conversion from string "����
有人知道可能是什么问题吗?我不知道我是否做对了。

嗨,潘卡吉 我不确定,但只尝试不带transactionID和guide参数的image NSData, 你的代码看起来不错。 请告诉我结果。

你好,潘卡吉 我不确定,但只尝试不带transactionID和guide参数的image NSData, 你的代码看起来不错。
请告诉我结果。

根据您收到的错误,我认为您没有为请求正确设置参数

你为什么不上传你的照片?它有一个类ASIFormDataRequest,您可以使用它来发出POST或GET请求,并且可以非常轻松地向其中添加参数


是使用ASIHTTPRequest上载图像的示例。

根据您收到的错误,我认为您没有正确设置请求的参数

你为什么不上传你的照片?它有一个类ASIFormDataRequest,您可以使用它来发出POST或GET请求,并且可以非常轻松地向其中添加参数


是使用ASIHTTPRequest上载图像的示例。

您没有正确格式化上载数据。post数据应该如下所示:

--boundary
Content-Disposition: form-data; name="foo"

value-for-foo
--boundary
Content-Disposition: form-data; name="bar"

value-for-bar
--boundary
Content-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data
--boundary--
--boundary
Content-Disposition: form-data; name="foo"
value-for-fooContent-Disposition: form-data; name="bar"
value-for-barContent-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data--boundary--
请注意,在标题和字段值之间有一个空行(“\r\n\r\n”),在值之后有一个crlf,在下一个字段标题之前有一个重复的边界。您的代码中没有这些内容,您的输出看起来更像这样:

--boundary
Content-Disposition: form-data; name="foo"

value-for-foo
--boundary
Content-Disposition: form-data; name="bar"

value-for-bar
--boundary
Content-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data
--boundary--
--boundary
Content-Disposition: form-data; name="foo"
value-for-fooContent-Disposition: form-data; name="bar"
value-for-barContent-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data--boundary--

您没有正确格式化上载数据。post数据应该如下所示:

--boundary
Content-Disposition: form-data; name="foo"

value-for-foo
--boundary
Content-Disposition: form-data; name="bar"

value-for-bar
--boundary
Content-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data
--boundary--
--boundary
Content-Disposition: form-data; name="foo"
value-for-fooContent-Disposition: form-data; name="bar"
value-for-barContent-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data--boundary--
请注意,在标题和字段值之间有一个空行(“\r\n\r\n”),在值之后有一个crlf,在下一个字段标题之前有一个重复的边界。您的代码中没有这些内容,您的输出看起来更像这样:

--boundary
Content-Disposition: form-data; name="foo"

value-for-foo
--boundary
Content-Disposition: form-data; name="bar"

value-for-bar
--boundary
Content-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data
--boundary--
--boundary
Content-Disposition: form-data; name="foo"
value-for-fooContent-Disposition: form-data; name="bar"
value-for-barContent-Disposition: form-data; name="file"; filename="filename.ext"
Content-Type: application/whatever

file data--boundary--

您说您想发布PNG图像,但您正在获取代码片段中的JPEG表示。更改为UIImagePNGRepresentation是否可以解决此问题?

您说您想发布PNG图像,但正在获取代码片段中的JPEG表示。是否通过更改为UIImagePNGRepresentation来解决此问题?

否服务器仅使用所有参数响应请求否服务器仅使用所有参数响应请求和的副本和副本