Web 開発では、「ダウンロード」モジュールの開発が必要になることがよくあります。簡単な例を以下に示します。
サーバー側では、Java 開発を使用します:
@RequestMapping(value = "download.html", method = RequestMethod.GET) public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { response.setContentType("charset=UTF-8"); File file = new File(path); response.setHeader("Content-Disposition", "attachment; filename=a"); BufferedInputStream bis = null; BufferedOutputStream bos = null; OutputStream fos = null; InputStream fis = null; try { fis = new FileInputStream(file.getAbsolutePath()); bis = new BufferedInputStream(fis); fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); int bytesRead = 0; byte[] buffer = new byte[5 * 1024]; while ((bytesRead = bis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } bos.flush(); }catch(E e){ }finally { try { bis.close(); bos.close(); fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
フロントエンドでこのアドレスをリクエストすると、サーバーは最初にファイルを見つけ、応答ヘッダーを設定し、それからストリームを通じてブラウザに出力します。
ブラウザは、応答の本文がヘッダー内のストリーム ファイルであることを検出すると、自動的に [名前を付けて保存] ウィンドウを呼び出し、ユーザーがダウンロードを保存できるようにします。
ここで重要なのはヘッダー属性 Content-Disposition です。Content-Disposition は MIME プロトコルの拡張機能であり、添付ファイルの表示方法をクライアントに指示するために使用されます。
2 つの値に設定できます:
インライン //オンラインで開く
attachment //添付ファイルとしてダウンロード
ここで設定した値はattachmentなので、添付ファイルとして認識されてダウンロードされます。
上記はサーバー側の記述方法を説明し、以下はフロントエンドへのリクエスト方法を説明します。
フロントエンドリクエストを行うには 3 つの方法があります:
1.フォーム
<form action='download.html' method='post'> <input type='submit'/> </form>
2.iframe
var iframe = "<iframe style='display:none' src='download.html'></iframe>" body.append(iframe);
iframe が本文に追加されると、ダウンロード リンクが自動的に要求されます。
3.開く
window.open("download.html");