0

我想上传用户选择的图像数组。他们编码为base64。我收到来自服务器的空响应。以下是我的代码如下。使用NSURLSession上传多个图像

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。 任何帮助都会很好!

+0

你能告诉我们你的网址格式吗? –

+0

'NSURL * url = [NSURL URLWithString:uploadURL];','uploadURL = @“www.xxx.com”;'这是网址。 – user5553647

+1

图像应该作为多部分表单数据上传!不是base64Encoded字符串! – Lion

回答

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" 
    }, 
     ... 
    ] 
} 
+0

这对我来说也不适用。服务器期望它按照我的方式发送。 – user5553647

+0

无论采用哪种方式,问题都是您没有以服务器期望的形式发送它(例如,您确定它期望JSON?)或者服务器端存在错误。你的客户端代码很好。 – dgatwood

+0

更正:您的内容类型可能是错误的。尝试应用程序/ JSON。 – dgatwood

0

最后我在前一段时间发现了这个问题。

问题出在服务器端。

+0

以上所有代码均完美无缺。 – user5553647