0

クライアント側Aから、javascript でその場でファイルを作成し、それを Ajax 経由で Django サーバーBに送信してさらに処理したいと考えています。

Aの JavaScript コードは次のようになります。私は blob を使用して、実際にアップロードされていないファイルを作成し、Ajax 経由で送信します。

console.log("start sending binary data...");
var form = new FormData();
var blob = new Blob([bytesArray], {type: 'example/binary'});    
form.append('file_name', blob, 'test.bin');    

$.ajax({
   url: THIRD_SERVER + 'test_binary',
   type: 'POST',       
   data: form,
   processData: false,
   success: function(data){
      console.log('test_binary ' + JSON.stringify(data));
   }
});

ただし、Djangoサーバーでは、( i の場合print request.POST)次のようになるため、 Django FileUploadを使用すると例外が返されました。

<QueryDict: {u' name': [u'"file_name"'], u'------WebKitFormBoundarybCp3z7mAduz8BBDq\r\nContent-Disposition: form-data': [u''], u' filename': [u'"test.bin"\r\nContent-Type: example/binary\r\n\r\n\ufffd\ufffd\ufffd\x01\x05\x06\r\n------WebKitFormBoundarybCp3z7mAduz8BBDq--\r\n']}>

したがって、上記の JavaScript はファイルを Django サーバーに送信するのに適切ではないと思います。FileUpload を使用して処理できる適切な方法はありますか?

ありがとう、

4

1 に答える 1

1

コンテンツ タイプを設定しないように $.ajax に指示する必要があります。そうしないと、正しく設定されません。

$.ajax({
   url: THIRD_SERVER + 'test_binary',
   type: 'POST',       
   data: form,
   processData: false,
   contentType: false,
   success: function(data){
      console.log('test_binary ' + JSON.stringify(data));
   }
});
于 2014-07-05T03:53:50.387 に答える