使用两个参数 iOS 将文件发送到服务器 iOS



我想将文件发送到服务器路径,并将参数"filepath"作为参数,并将文件数据作为另一个参数。我该怎么做。在下文中,我将在文件路径后附加数据。但我想这是错误的,请帮助

NSURL *nsurl =[NSURL URLWithString:_urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsurl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setURL:nsurl];
[request setHTTPMethod:@"POST"];

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
NSData *data = UIImageJPEGRepresentation([UIImage imageNamed:@"Model.png"],  0.0);
NSString *string = [NSString stringWithFormat:@"filepath=%@",_filePath];
NSData *pathData = [string dataUsingEncoding:NSUTF8StringEncoding];
[body appendData:pathData];
//Image
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name="image"; filename="%@"rn",@"newFile.png"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-streamrnrn" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data];
[body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:nil];
NSLog(@"%@",dict);

谢谢

你不能

一开始就做[body appendData:pathData];。您需要添加适当的边界和内容信息。所以你应该有很多行,比如:

  1. 添加边界
  2. 添加内容信息
  3. 添加内容数据
  4. 添加边界

并从 2 开始重复要添加的每个额外数据。

检查规范,了解有关需要为每种数据类型添加的相应内容类型和处置信息的信息(底部是您的完美示例)。

最新更新