1. ホーム
  2. Java

ダウンロードのContentType設定

2022-02-24 03:02:55
application/octet-stream --- application/force-download ---

application/x-download

// public void exportTxt(HttpServletRequest request,HttpServletResponse response,List

このメッセージヘッダである content-disposition は、メッセージの本文を記述し、受信側の表示処理動作を指定する。

このヘッダにはattachmentとinlineという2つの値があり、それぞれ保存するか直接表示するかを示している。


  1. 公開 ボイド  download() {  
  2.         文字列 filePath =  これ .queueService.getCsvFilePathById(id); // データベースクエリから取得したダウンロードするファイルのパスだが、もちろんファイルパスを直接書いても良い。
  3. トライ  {  
  4.             ファイル file =  新しい  ファイル(filePath);  
  5.             文字列 fileName = filePath.substring(filePath.lastIndexOf(File.separator)+) 1 ); //ファイル名を取得する
  6.             ファイル名 =  新しい  文字列(fileName.getBytes() "UTF-8" ), "ISO8859-1" ); // UTF-8でファイル名を取り出し、ISO8859-1でエンコードします。ポップアップウィンドウのファイル名の中国語が文字化けしていないか、中国語が多すぎないか、ヘッダが150バイトの制限があるため、最大17個の中国語がサポートされていることを確認します。
  7.             レスポンス.setContentType( application/octet-stream" ); // ブラウザにコンテンツをストリームとして出力するよう指示する
  8.             response.addHeader( "Content-Disposition" "attachment;filename="。 +fileName)。 /Content-Dispositionで指定されたタイプがファイル拡張子となり、ポップアップダウンロードダイアログのファイルタイプ画像はファイル拡張子に応じたものが表示されます。保存] をクリックすると、ファイル名は filename の値で、保存タイプは [コンテンツ] で設定されたものに基づいています。注:Content-Dispositionヘッダーフィールドを設定する前に、必ずContent-Typeヘッダーフィールドを設定してください。
  9.             String len = String.valueOf(file.length())です。  
  10.             レスポンス.setHeader( "Content-Length" , len)となります。 // コンテンツの長さを設定する
  11.             OutputStream out = response.getOutputStream();  
  12.             FileInputStream in =  新しい  FileInputStream(file)。  
  13. バイト [] b =  新しい バイト [ <スパン 1024 ];  
  14. int  n;  
  15. ((n=in.read(b))! =- 1 <スパン ){  
  16.                 out.write(b,  0 , n);  
  17.             }  
  18.             in.close()を実行します。  
  19.             out.close()を実行します。  
  20.         }  キャッチ  (FileNotFoundException e) {。  
  21.             e.printStackTrace()を実行します。  
  22.         }  キャッチ  (IOExceptionのe) {。  
  23.             e.printStackTrace()を実行します。  
  24.         }  
  25.     }  

// String NEW_LINE = System.getProperty("line.separator");
// try {
// request.setCharacterEncoding("UTF-8");
// } catch (UnsupportedEncodingException e1) {
// e1.printStackTrace();
// }
//
// if (faiList.size()>0) {
// // export the txt file
// response.setContentType("application/octet-stream");
// String fileName="repayment failed";
// try {
// response.setHeader("Content-Disposition","attachment; filename=" + java.net.URLEncoder.encode(fileName, " UTF-8")
// + ".txt");// export Chinese name
// } catch (UnsupportedEncodingException e2) {
// e2.printStackTrace();
// }
// BufferedOutputStream buff = null;
// StringBuffer write = new StringBuffer();
// ServletOutputStream outSTr = null;
// try {
// outSTr = response.getOutputStream(); // create
// buff = new BufferedOutputStream(outSTr);
// String tcb = "\t";
// write.append("" + tcb);
// write.append("Total uploads" + sucList.size() + faiList.size() + tcb);
// write.append("Total number of successful uploads" + sucList.size() + tcb);
// write.append("Total number of failed uploads" + faiList.size() + NEW_LINE);
// write.append("" + tcb);
// write.append("UploadFailureapplicationID" +NEW_LINE);
// for (BuManualRepayment model : faiList) {
// write.append(model.getApplicationId() +NEW_LINE);
// }
// buff.write(write.toString().getBytes("UTF-8"));
// buff.flush();
// buff.close();
// } catch (IOException e1) {
// e1.printStackTrace();
// } finally {
// try {
// buff.close();
// outSTr.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }
//
// }







 sucList,リスト


 faiList) {




// String NEW_LINE = System.getProperty("line.separator");
// try {
// request.setCharacterEncoding("UTF-8");
// } catch (UnsupportedEncodingException e1) {
// e1.printStackTrace();
// }
//
// if (faiList.size()>0) {
// // export the txt file
// response.setContentType("application/octet-stream");
// String fileName="repayment failed";
// try {
// response.setHeader("Content-Disposition","attachment; filename=" + java.net.URLEncoder.encode(fileName, " UTF-8")
// + ".txt");// export Chinese name
// } catch (UnsupportedEncodingException e2) {
// e2.printStackTrace();
// }
// BufferedOutputStream buff = null;
// StringBuffer write = new StringBuffer();
// ServletOutputStream outSTr = null;
// try {
// outSTr = response.getOutputStream(); // create
// buff = new BufferedOutputStream(outSTr);
// String tcb = "\t";
// write.append("" + tcb);
// write.append("Total uploads" + sucList.size() + faiList.size() + tcb);
// write.append("Total number of successful uploads" + sucList.size() + tcb);
// write.append("Total number of failed uploads" + faiList.size() + NEW_LINE);
// write.append("" + tcb);
// write.append("UploadFailureapplicationID" +NEW_LINE);
// for (BuManualRepayment model : faiList) {
// write.append(model.getApplicationId() +NEW_LINE);
// }
// buff.write(write.toString().getBytes("UTF-8"));
// buff.flush();
// buff.close();
// } catch (IOException e1) {
// e1.printStackTrace();
// } finally {
// try {
// buff.close();
// outSTr.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }
//
// }


    1. @RequestMapping( ファイル/ダウンロード")   
    2. パブリック  void fileDownload(HttpServletResponse response){...   
    3. // ダウンロードするファイルの場所を決定するために、(ServletContext オブジェクトを介して)サイトの配置パスを取得する。  
    4.         文字列パス = servletContext.getRealPath( "/")。  
    5. //1.ダウンロードファイルの種類を自動的に判断するように、ファイルのContentTypeタイプを設定します。  
    6.         レスポンス.setContentType( "multipart/form-data");   
    7. //2. ファイルヘッダを設定する:最後のパラメータはダウンロードファイルの名前を設定します(a.pdfと呼ぶ場合)。  
    8.         レスポンス.setHeader( "Content-Disposition"。  "添付ファイル;fileName="+。 "a.pdf")。  
    9.         ServletOutputStream out;   
    10. //ファイルパスから File オブジェクトを取得します (このパスに download.pdf ファイルがあるとします)   
    11.         ファイル file =  新しいファイル(path +)  "ダウンロード/" +.  "download.pdf")です。  
    12. トライ {   
    13.             FileInputStream inputStream =  new FileInputStream(file)。  
    14. //3. レスポンスでServletOutputStreamオブジェクト(out)を取得する   
    15.             out = response.getOutputStream()。  
    16. int b =  0;   
    17. byte[] バッファ =  新規  バイト[ 512];   
    18. while (b ! = - 1){   
    19.                 b = inputStream.read(buffer)。  
    20. //4. 出力ストリーム(out)に書き込む   
    21.                 out.write(buffer, 0,b);   
    22.             }   
    23.             inputStream.close()を実行します。  
    24.             out.close()を実行します。  
    25.             out.flush()を実行します。  
    26.         }  catch (IOExceptionのe) {。  
    27.             e.printStackTrace()を実行します。  
    28.         }   
    29.     }   
    30. オーバーライド  
    31. パブリック  void setServletContext(ServletContext servletContext) { }.   
    32. this.servletContext = servletContext;   
    33.     }   
    'ez' => 'application/andrew-inset',   
  1. 'hqx' => 'application/mac-binhex40' です。  
  2. 'cpt' => 'application/mac-compactpro',   
  3. 'doc' => 'application/msword',   
  4. 'bin' => 'application/octet-stream'。  
  5. 'dms' => 'application/octet-stream'。  
  6. 'lha' => 'application/octet-stream'。  
  7. 'lzh' => 'application/octet-stream'。  
  8. 'exe' => 'application/octet-stream',   
  9. 'class' => 'application/octet-stream'。  
  10. 'so' => 'application/octet-stream'。  
  11. 'dll' => 'application/octet-stream'。  
  12. 'oda' => 'application/oda'。  
  13. 'pdf' => 'application/pdf'。  
  14. 'ai' => 'application/postscript'。  
  15. 'eps' => 'application/postscript'。  
  16. 'ps' => 'application/postscript'です。  
  17. 'smi' => 'application/smil',   
  18. 'smil' => 'application/smil'。  
  19. 'mif' => 'application/vnd.mif',   
  20. 'xls' => 'application/vnd.ms-excel',   
  21. 'ppt' => 'application/vnd.ms-powerpoint',   
  22. 'wbxml' => 'application/vnd.wap.wbxml',   
  23. 'wmlc' => 'application/vnd.wap.wmlc',   
  24. 'wmlsc' => 'application/vnd.wap.wmlscriptc',   
  25. 'bcpio' => 'application/x-bcpio'。  
  26. 'vcd' => 'application/x-cdlink',   
  27. 'pgn' => 'application/x-chess-pgn',   
  28. 'cpio' => 'application/x-cpio',   
  29. 'csh' => 'application/x-csh',   
  30. 'dcr' => 'application/x-director'。  
  31. 'dir' => 'application/x-director'です。  
  32. 'dxr' => 'application/x-director'です。  
  33. 'dvi' => 'application/x-dvi',   
  34. 'spl' => 'application/x-futuresplash',   
  35. 'gtar' => 'application/x-gtar',   
  36. 'hdf' => 'application/x-hdf',   
  37. 'js' => 'application/x-javascript'。  
  38. 'skp' => 'application/x-koan'です。  
  39. 'skd' => 'application/x-koan'。  
  40. 'skt' => 'application/x-koan'。  
  41. 'skm' => 'application/x-koan'。  
  42. 'latex' => 'application/x-latex',   
  43. 'nc' => 'application/x-netcdf',   
  44. 'cdf' => 'application/x-netcdf',   
  45. 'sh' => 'application/x-sh',   
  46. 'shar' => 'application/x-shar' です。  
  47. 'swf' => 'application/x-shockwave-flash',   
  48. 'sit' => 'application/x-stuffit',   
  49. 'sv4cpio' => 'application/x-sv4cpio'。  
  50. 'sv4crc' => 'application/x-sv4crc'。  
  51. 'tar' => 'application/x-tar',   
  52. 'tcl' => 'application/x-tcl',   
  53. 'tex' => 'application/x-tex'。  
  54. 'texinfo' => 'application/x-texinfo',   
  55. 'texi' => 'application/x-texinfo',   
  56. 't' => 'application/x-troff'。  
  57. 'tr' => 'application/x-troff'です。  
  58. 'roff' => 'application/x-troff'。  
  59. 'man' => 'application/x-troff-man',   
  60. 'me' => 'application/x-troff-me',   
  61. 'ms' => 'application/x-troff-ms',   
  62. 'ustar'=>「application/x-ustar」。  
  63. 'src' => 'application/x-wais-source'です。  
  64. 'xhtml' => 'application/xhtml+xml'です。  
  65. 'xht' => 'application/xhtml+xml'です。  
  66. 'zip' => 'application/zip'です。  
  67. 'au' => 'audio/basic',   
  68. 'snd' => 'audio/basic'です。  
  69. 'mid' => 'audio/midi'です。  
  70. 'midi' => 'audio/midi'です。  
  71. 'kar' => 'audio/midi'です。  
  72. 'mpga' => 'audio/mpeg'。  
  73. 'mp2' => 'audio/mpeg'です。  
  74. 'mp3' => 'audio/mpeg'です。  
  75. 'aif' => 'audio/x-aiff'です。  
  76. 'aiff' => 'audio/x-aiff'です。  
  77. 'aifc' => 'audio/x-aiff'です。  
  78. 'm3u' => 'audio/x-mpegurl'です。  
  79. 'ram' => 'audio/x-pn-realaudio'です。  
  80. 'rm' => 'audio/x-pn-realaudio'です。  
  81. 'rpm' => 'audio/x-pn-realaudio-plugin'。  
  82. 'ra' => 'audio/x-realaudio'です。  
  83. 'wav' => 'audio/x-wav'となります。  
  84. 'pdb' => 'chemical/x-pdb'。  
  85. 'xyz' => 'chemical/x-xyz'。  
  86. 'bmp' => 'image/bmp'。  
  87. 'gif' => 'image/gif'。  
  88. 'ief'=>「画像/ief」です。  
  89. 'jpeg' => 'image/jpeg'。  
  90. 'jpg' => 'image/jpeg' です。  
  91. 'jpe' => 'image/jpeg',   
  92. 'png' => 'image/png',   
  93. 'tiff' => 'image/tiff',   
  94. 'tif' => 'image/tiff'です。  
  95. 'djvu' => 'image/vnd.djvu',   
  96. 'djv' => 'image/vnd.djvu',   
  97. 'wbmp' => 'image/vnd.wap.wbmp',   
  98. 'ras' => 'image/x-cmu-raster',   
  99. 'pnm' => 'image/x-portable-anymap',   
  100. 'pbm' => 'image/x-portable-bitmap' です。  
  101. 'pgm' => 'image/x-portable-graymap',   
  102. 'ppm' => 'image/x-portable-pixmap',   
  103. 'rgb' => 'image/x-rgb',   
  104. 'xbm' => 'image/x-xbitmap',   
  105. 'xpm' => 'image/x-xpixmap',   
  106. 'xwd' => 'image/xwindowdump' です。  
  107. 'igs'=>「モデル/イグス」。  
  108. iges' => 'model/iges'です。  
  109. 'msh' => 'model/mesh'です。  
  110. 'mesh' => 'model/mesh'です。  
  111. 'サイロ' => 'モデル/メッシュ',   
  112. 'wrl' => 'model/vrml'です。  
  113. 'vrml' => 'model/vrml'です。  
  114. 'css' => 'text/css'です。  
  115. 'html' => 'text/html'です。  
  116. 'htm' => 'text/html'です。  
  117. 'asc' => 'text/plain'です。  
  118. 'txt' => 'text/plain'です。  
  119. 'rtx' => 'text/richtext' です。  
  120. 'rtf' => 'text/rtf'です。  
  121. 'sgml' => 'text/sgml'。  
  122. 'sgm' => 'text/sgml'です。  
  123. 'tsv' => 'text/tab-separated-values',   
  124. 'wml' => 'text/vnd.wap.wml',   
  125. 'wmls' => 'text/vnd.wap.wmlscript',   
  126. 'etx' => 'text/x-setext',   
  127. 'xsl' => 'text/xml'です。  
  128. 'xml' => 'text/xml'です。  
  129. 'mpeg' => 'video/mpeg'。  
  130. 'mpg' => 'video/mpeg'です。  
  131. 'mpe' => 'video/mpeg'です。  
  132. 'qt' => 'video/quicktime',   
  133. 'mov' => 'video/quicktime' です。  
  134. 'mxu' => 'video/vnd.mpegurl',   
  135. 'avi' => 'video/x-msvideo',   
  136. 'movie' => 'video/x-sgi-movie',   
  137. 'ice' => 'x-conference/x-cooltalk'。