2
私はサーバーからajax経由でファイルをダウンロードする必要があります。問題は、ファイルがサーバーに格納されていないことです。私のJavaベースのバックエンドは自動的にリクエストパラメータからファイルを生成し、レスポンスボディでそれを返します。 ajaxを介したファイルダウンロード
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(@RequestParam String description, @RequestParam Long logId, HttpServletResponse response) {
try {
InputStream fileContent = // getting file as byte stream
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader("Content-Disposition", "attachment; filename=file.zip");
ServletOutputStream responseOutputStream = response.getOutputStream();
org.apache.commons.io.IOUtils.copy(fileContent, responseOutputStream);
response.flushBuffer();
} catch (IOException e) {
logger.error("Attempt to download file failed", e);
}
}
は、だから私はそれを処理し、ユーザーがファイルをダウンロードできるようにする必要があります。 私のクライアント側は、これを含んでいます
$.ajax({
type: "GET",
url: "/download",
data: {
description: "test",
logId: 123
},
success: function(data) {
var blob = new Blob([data]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "file.zip";
link.click();
}
})
コントローラは、ファイルを返したが、その後何も起こりません。何が間違っているのですか?
しかし、私は私が必要とする必要があります私は取得し、looong文字列パラメータを渡す代わりに要求をしたいですか? – Everv0id
このメソッドはPOSTでは機能しません。しかし、なぜ今あなたの質問を変えていますか? –
あなたの答えは私の特定のケースでは完全に機能しています。私はもっと深く掘り下げようとしています。 – Everv0id