在iOS应用程序中将带有图像的数据发布到服务器

时间:2014-05-02 10:59:50

标签: ios web-services image-uploading ios7.1

我已成功将UIImage发布到服务器,但我需要使用UIImage发布NSString 下面是我试图将UIImage发布到服务器的代码。 selectedItem是我从库中存储所有选定的UIImage的数组。 我评论的那条线是我需要发送给服务器的。

for (int i=0; i<[selectedItem count]; i++) {
  //NSString *post =[[NSString alloc] initWithFormat:@"mid:%@",mid];

  NSData *theData = UIImagePNGRepresentation([selectedItem objectAtIndex:i]);
  NSString *urlString = @"http://retailertoolkit.com/RTK/upload.php";

  NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
  [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",mid] dataUsingEncoding:NSUTF8StringEncoding]];

  [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary]   dataUsingEncoding:NSUTF8StringEncoding]];
  [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"file\"; filename=\"iphoneimage.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
  [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
  [body appendData:[NSData dataWithData:theData]];
  [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
  [request setHTTPBody:body];

  NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:request delegate:self];
  if(connection) {
  } else {
  }
}

1 个答案:

答案 0 :(得分:0)

在将图像添加到请求时,必须添加请求的每个参数。 尝试用

替换[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",mid] dataUsingEncoding:NSUTF8StringEncoding]];
  [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary]   dataUsingEncoding:NSUTF8StringEncoding]];
  [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"{parameter_name}\";\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];

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

parameter_name应该是您的mid字符串键(参数名称)。祝你好运!