ドキュメントファイルを別のファイルに変換する小さなHTMLプロジェクトを行っています(これはユーザーの好みに基づいています)。Web サイトでは、ユーザーがファイルを取得し、ファイルを Java サーブレットに送信する前に、ファイルの処理方法に関する好みを選択します。ファイルを処理した後、サーブレットは処理済みのファイルをダウンロード可能なファイルとして送信し、ユーザーのブラウザーのダウンロード フォルダーに自動的にダウンロードします。
最初は、HTML の form タグを使用して、さまざまな入力を行いました。フォームを送信すると、処理されたファイルがブラウザのダウンロード フォルダに自動ダウンロードされました。
しかし、その後、ファイルをピックアップする方法をドラッグ アンド ドロップに変更し、XMLHttpRequest を使用して、ドロップされたファイルと共にフォームデータをサーブレットに送信しました。フォームデータは正常にサーブレットに送信され、サーブレットはファイルを正常に処理しました。しかしその後、サーブレットは処理されたファイルをダウンロード可能なファイルとしてブラウザに送信しませんでした。ネットワークタブの下の応答でインスペクターをチェックしたところ、処理されたファイルの内容が表示されましたが、フォームタグメソッドを使用して通常取得するように処理されたファイルを取得できませんでした。
だから私は、以下の私のXHRコードで何か間違ったことをしたのだろうかと思っていましたか? 処理されたファイルをサーブレットからダウンロード可能なファイルとして取得し、自分のページには表示したくないだけです。HTMLフォームタグは正常に機能し、サーブレットは処理されたファイルを自動ダウンロードファイルとして返しましたが、XHRを使用すると、処理されたファイルはインスペクターのネットワークの下の応答タブにのみ表示され、ダウンロード可能なファイルは表示されませんでした。
function formHandler(form) {
var formdata = new FormData(form);
formdata.append("inputFile", doc);
var xhr = new XMLHttpRequest();
xhr.open('POST', "excelServlet", true);
xhr.send(formdata);
}