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