2016-11-08 6 views
0

http-request(CURL -Fリクエストと同様のもの)でファイルを投稿しようとしています。だから私は最高の次のコードで記述されて何をしたいか:私はクライアントでxmlファイルをつかむんかフロントエンドでDjangoから送られたファイルを取得する

def my_view(request): 
    string_to_return = '<?xml version="1.0" encoding="UTF-8"?>...' 
    file_to_send = ContentFile(string_to_return) 
    response  = HttpResponse(file_to_send,'application/xml') 
    response['Content-Length']  = file_to_send.size  
    response['Content-Disposition'] = 'attachment; filename="somefile.xml"' 
    return response 


$.get('/my_view/', function(response){ 
    var formData = new FormData(); 

    // file = ??? How do I grab the file ??? 
    formData.append("thefile", file); 
    xhr.send(formData); 
}); 

基本的には、ここで質問です。 ありがとうございます!

いくつかの注意

  1. 私は、クライアント側に渡され、HTTPリクエストを介して外部サーバに送信されるように、ファイルを必要とするサーバ側
  2. 上で生成されるファイルの内容を必要とします。

答えて

1

あなたはdjangoからファイルをダウンロードして、javascriptアプリケーションから別のサーバーにアップロードしようとしています。私は前にこれをしていないが、https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Dataによればそれほど難しいことではない。次はあなたの他のサーバーへのバイナリファイルアップロード

var oReq = new XMLHttpRequest(); 
oReq.open("GET", "/my_view/", true); 
oReq.responseType = "blob"; 

oReq.onload = function(oEvent) { 
    var blob = oReq.response; 
    // ...see below for this step 
    sendBlob(blob, 'http://www.example.com/other_url'); 
}; 

oReq.send(); 

まず、バイナリファイルをダウンロードし

function sendBlob(blob, url){ 
    var oReq = new XMLHttpRequest(); 
    oReq.open("POST", url, true); 
    oReq.onload = function (oEvent) { 
     // Uploaded. 
    }; 

    oReq.send(blob); 
} 
+0

をだからあなたは、ユーザーがジャンゴからXMLファイルをダウンロードしたいですか?なぜあなたは 'xhr.send'を使っていますか?ファイルをダウンロードしようとしているのではなく、ダウンロードしようとしているようです。 – roemhildtg

+0

私は答えを – roemhildtg

+0

に更新しました。クライアントマシンがリクエストを送信することは非常に重要です! –

関連する問題