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を使用して、デリゲートから画像を取得しています。私はNSMutableURLRequestの体の内容としてNSMutableDictionaryを持っています。ここで

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


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

は、私は500のように、サーバーの応答コードとサーバーからヌル応答を取得していますNSMutableURLRequest

request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 

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

[request setHTTPBody:JSONData]; 

です。私はNSURLSessionDataTaskNSURLSessionUploadTaskの両方を試しました。 助けてもらえますか?

+0

あなたのURLのフォーマットを教えてください。 –

+0

NSURL * url = [NSURL URLWithString:uploadURL]; '、' uploadURL = @ "www.xxx.com"; 'これはURLです。 – user5553647

+1

画像はマルチパート形式のデータとしてアップロードする必要があります。 base64としてエンコードされていない文字列! – 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

修正:コンテンツの種類が間違っている可能性があります。 application/jsonを試してみてください。 – dgatwood

0

最後に私はいつか問題を発見しました。

問題はサーバー側で発生していました。

+0

上記のコードはすべて完璧に動作します。 – user5553647

関連する問題