UIImage使用NSMutable请求上传 [英] UIImage uploading using NSMutable request

查看:135
本文介绍了UIImage使用NSMutable请求上传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要POST请求。该请求有3个参数,'email_id','location'和'image_data'。 'image_data'的值包含UIImage的NSData jpeg表示。该请求必须使用multipart / form-data的内容类型提交。我如何创建NSMutableRequest发布此请求?我应该如何设置边界?是整个数据包所需的边界,还是只有图像部分是足够的?

解决方案

 
NSData * imageData = UIImageJPEGRepresentation(imageview.image,1.0);
NSString * filename = @nike.jpg

NSString * urlString = @http://xyz.com/file_upload/file1.php;
NSMutableURLRequest * request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@POST];

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

NSMutableData * body = [NSMutableData data];
NSMutableString * string = [[NSMutableString alloc] init];
[string appendFormat:@\r\\\
\r\\\
- %@ \r\\\
,boundary];
[string appendFormat:@Content-Disposition:form-data; name = \emailid \\r\\\
\r\\\
];
[string appendFormat:@pradz39@gmail.com]; // value
[body appendData:[string dataUsingEncoding:NSUTF8StringEncoding]]; //加密整个身体

[body appendData:[[NSString stringWithFormat:@\r\\\
- %@ \r\\\
,boundary] dataUsingEncoding:NSUTF8StringEncoding]] ;
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@Content-Disposition:form-data; name = \userfile\; filename = \%@ \\\\r \\\
,filename]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@Content-Type:application / octet-stream\r\\\
\r\\\
] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];

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

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


I need to POST a request. The request has 3 parameters, 'email_id' , 'location' and 'image_data'. The value for 'image_data' contains NSData jpeg representation of a UIImage. The request must be submitted using a content type of multipart/form-data. How can I create the NSMutableRequest for posting this request? How should I set the boundary? Is the boundary required for the entire packet or is it enough only for the image part?

解决方案

NSData *imageData=UIImageJPEGRepresentation(imageview.image, 1.0);
NSString *filename=@"nike.jpg"

NSString *urlString = @"http://xyz.com/file_upload/file1.php";
NSMutableURLRequest *request =[[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

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

     NSMutableData *body = [NSMutableData data];
     NSMutableString * string = [[NSMutableString alloc] init];
    [string appendFormat:@"\r\n\r\n--%@\r\n", boundary];
    [string appendFormat:@"Content-Disposition: form-data; name=\"emailid\"\r\n\r\n"];
    [string appendFormat:@"pradz39@gmail.com"]; //value
    [body appendData:[string dataUsingEncoding:NSUTF8StringEncoding]]; // encrypt the entire body   

    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",filename]] 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]];
    [string release];

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

这篇关于UIImage使用NSMutable请求上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆