2016-10-04 5 views
2

JavaScriptで生成されたファイル(最大数MB)をサーバーに送信する必要があります。私はPOST(ajax POSTではなく)でそれを行う必要があります。JavaScriptを入力タイプ= "ファイル"に添付するファイル

JavaScriptでinput type = "file"にファイルを追加するにはどうすればよいですか? Pre-Populate HTML form file inputによると、セキュリティ上の理由から可能ではないようです。しかし、私はブラウザでファイルを作成しますが、これはセキュリティの問題ではありません。

ファイルをテキストとして他のタイプの入力に貼り付けることができます。しかし、私はそれが正しいと感じない。

ここに解決策はありますか?ブラウザからファイルをファイル入力する方法はありますか?それとも他の入力でもOKですか?入力要素なしでファイルをPOSTにパックする方法はありますか?

ザ・は私が使用したいことができます:あなたが生成されたファイルを送ることができ

$("#button").click(function(e) { 
    $('#file').val(export_pdf()); 
    $('#form').submit(); 
}); 
+2

[Pre-Populate HTMLフォームファイルの入力]の複製があります。(http://stackoverflow.com/questions/16365668/pre-populate-html-form-file-input) – Liam

+2

この質問はあなたの口元に答えるものです。それは不可能です。同じ質問をもう一度尋ねてもこの事実は変わりません – Liam

+1

ファイルの作成方法を表示してください –

答えて

3

ファイルを作成し、HTMLフォームの入力に添付することはできませんが、いるFormDataオブジェクトを使用してサーバーをポストリクエストの一部として実行します。あなたのサーバーに送信されたJSによって生成されたファイルの同じ結果を得る必要があります

var formData = new FormData(); 

// JavaScript file-like object 
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file... 
var blob = new Blob([content], { type: "text/xml"}); 

formData.append("webmasterfile", blob); 

var request = new XMLHttpRequest(); 
request.open("POST", "http://foo.com/submitform.php"); 
request.send(formData); 

:MDNから引き出さ

+0

しかし、このようなファイルを送信すると、指定されたアドレスにユーザーがリダイレクトされず、そこでファイルが送信されます。 – matousc

+0

次に、window.location.href = "url"を使用してユーザーをリダイレクトすることができます。私は、ファイルの内容を隠し要素の値にアタッチすることしか考えられませんが、私はそれがどれほどうまくいくかを検証することはできません。 –

+0

しかし、window.locationを持つソリューションは別の要求を引き起こします。私が達成する必要があるのは、かなり簡単な操作でなければなりません。 2つのリクエストはうまくいきません。 – matousc

関連する問題