0

我正在尝试上传用户选择的图像数组。它们被base64编码。我收到来自服务器的空响应。下面是我的代码。

for (PHAsset *asset in assets) {

[manager requestImageForAsset:asset  targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:self.requestOptions resultHandler:^void(UIImage *image, NSDictionary *info) {


   NSString *encodeStr = [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];      

  [images addObject:encodeStr];

   }];
}

我正在使用QBImagePickerController从委托获取图像。我有一个NSMutableDictionary作为正文内容的NSMutableURLRequest.

[uploadObject setValue:@"32" forKey:@"userid"];        
[uploadObject setValue:TFname.text forKey:@"Name"];        
[uploadObject setObject:images forKey:@"SelectedImages"];        


JSONData = [NSJSONSerialization dataWithJSONObject:uploadObject options:NSJSONWritingPrettyPrinted error:nil];

这里是NSMutableURLRequest

request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"POST"];

[request setValue:@"JSON" forHTTPHeaderField:@"Content-Type"];

[request setHTTPBody:JSONData];

我收到服务器响应代码为 500 和来自服务器的空响应。我都试过了NSURLSessionDataTaskNSURLSessionUploadTask。任何帮助都会有好处!

4

2 回答 2

1

如果不查看服务器端代码,就无法确定此代码是否正确。看起来您正在向服务器发送以下内容:

{
  "userid" : "32",
  "Name": "someFilename",
  "SelectedImages": [
      "base64-encoded-data-of-first-image",
      "base64-encoded-data-of-second-image",
      ...
  ]
}

如果您的服务器了解如何解析 JSON 请求正文并获取具有这些名称的字段,那么它应该可以正常工作。但是,格式似乎不太可能是正确的,因为您传递的多个图像似乎是单个文件名。

如果您正在使用现有的服务器代码,则需要找出它期望数据采用的格式。如果您正在编写自己的服务器代码,您可能应该将数据结构更像这样:

{
  "userid" : "32",
  "SelectedImages": [
     {
        "name": "firstFilename",
        "data": "base64-encoded-data-of-first-image"
     },
     {
        "name": "secondFilename",
        "data": "base64-encoded-data-of-second-image"
     },
      ...
  ]
}
于 2016-08-24T03:54:43.110 回答
0

终于我前一段时间发现了这个问题。

问题出在服务器端。

于 2016-09-09T05:11:33.610 回答