简体   繁体   English

在 iphone 中发布带有参数的图像

[英]Post Image With parametrs in iphone

I am using NSURLConnection to integtarte the Web-service.我正在使用 NSURLConnection 来集成 Web 服务。

My code is as follow:我的代码如下:

NSURL *url = [NSURL URLWithString:Sign_Up_URL];
     NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
     NSString *params = [NSString stringWithFormat:@"vimage=%@&@"vFname=%@&vLname=%@&vEmail=%@&vPassword=%@&vDeviceType=%@&vDeviceToken=%@",image_data,txt_first.text,txt_last.text,txt_email.text,txt_password.text,@"IOS",@"safasf423526dgdsgdsg"];
     [urlRequest setHTTPMethod:@"POST"];
     [urlRequest setValue:header_filed forHTTPHeaderField:@"X_API_KEY"];
     [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

     [NSURLConnection sendAsynchronousRequest:urlRequest
     queue:[NSOperationQueue mainQueue]
     completionHandler:^(NSURLResponse *response,
     NSData *data,
     NSError *connectionError) {
     // handle response
     [MBProgressHUD hideHUDForView:self.view animated:YES];
     NSDictionary *json_response = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
     NSLog(@"%@",json_response);
     //  [self login_response:json_response];
     }];

But How can I upload a image with this parameter?但是如何使用此参数上传图像?

Also Refer this 也参考这个

Help for this.为此提供帮助。

Please read Article : http://nthn.me/posts/2012/objc-multipart-forms.html , and used ContentType : Multipart/from-data ;请阅读文章: http : //nthn.me/posts/2012/objc-multipart-forms.html ,并使用 ContentType : Multipart/from-data

for your reference :供你参考 :

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

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user\"\r\n\r\n%d", 1] dataUsingEncoding:NSUTF8StringEncoding]];

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

[request setHTTPBody:body]; 

Hope this will help, Please update me if you have getting any error.希望这会有所帮助,如果您遇到任何错误,请更新我。

By using NSURLConnection you can do like below通过使用 NSURLConnection 你可以像下面这样

NSData* fileData = [[NSData alloc] initWithContentsOfFile:image_data];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:Sign_Up_URL]];
[request setHTTPMethod:@"POST"];
 
NSString *boundary = [NSString stringWithString:@"0xKhTmLbOuNdArY"]; // This is important! //NSURLConnection is very sensitive to format.
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 stringWithString:@"Content-Disposition: form-data; name=\"VFname\"; filename=\"thefilename\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:fileData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"param2\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:self.emailtextfield.text] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"param3\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:self.passwordtextfield.text] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:self.vlnametextfield.text] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];

(OR using ASIHTTPRequest you can do it as below) (或使用 ASIHTTPRequest 您可以按如下方式执行)

    ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:Sign_Up_URL];
    [request setDelegate:self];

    [request setPostValue:vnamelabel.textforKey:@"VFname"];

    [request setPostValue:emaillabel.text forKey:@"vEmail"];

    [request setPostValue:passwordlabel.text forKey:@"vPassword"];

    [request setPostValue:devicetypelabel.text forKey:@"vDeviceType"];

     [request addData:self.imagedata withFileName:@"image.jpeg" andContentType:@"image/jpeg" forKey:@"vimage"];
     //----------------------

Hope it helps you..希望能帮到你。。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM