iPhone:将图像上传到web aspx文件

时间:2010-07-29 19:31:33

标签: iphone forms upload asp.net content-type

我有点问题。 我必须使用POST方法将我的iPhone上的照片上传到Web服务器,但服务器文件是在aspx中。 我用我的服务器和PHP文件尝试了我的代码:效果很好! 现在使用aspx文件:不上传:(

我无法访问.aspx。

这是我的iphone代码:

NSData *imageData = UIImageJPEGRepresentation(imageView.image,70);

NSString *urlString = @"http://iphone.domain.net/upload_photos.aspx";


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",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"%@.jpg\"\r\n",[c nom]] 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];

我认为问题来自Content-Type或我的dataUsingEncoding:参数。 你有没有想法解决它?

3 个答案:

答案 0 :(得分:0)

通常,当---中指定边界时,边界不包含Content-Type。除此之外,看不到任何异常。

答案 1 :(得分:0)

尝试使用curl从命令行将其上传到aspx服务器。一旦你有了这个工作,传递-v(详细)或-i(包括HTTP标头)来确切地检查发送的内容,然后你可以尝试在Cocoa中复制它。

答案 2 :(得分:0)

如果您不反对使用第三方库,请考虑查看ASIHttpRequest。它会让你的生活变得如此简单:

http://allseeing-i.com/ASIHTTPRequest/

http://allseeing-i.com/ASIHTTPRequest/How-to-use

  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

    // Upload a file on disk
    [request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
    forKey:@"photo"];

    // Upload an NSData instance
    [request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];