ここに同様の質問があります:
xPages からファイルをストリーミングするには?
そして、ここにあるのは、そこから取得して私が完成させた Java コードの一部です (+ あなたからの修正!)。私も今それをテストしましたが、動作します:
FacesContext facesContext = FacesContext.getCurrentInstance();
XspHttpServletResponse response = (XspHttpServletResponse) facesContext.getExternalContext().getResponse();
String strFileName = "myfile.txt";
String strFilePath= "c:" + File.separator + strFileName;
response.setContentType(URLConnection.guessContentTypeFromName(strFileName));
response.setHeader("Content-Disposition","attachment;filename=" + strFileName);
//File file = new File(strFilePath);
FileInputStream fileIn = new FileInputStream(strFilePath);
ServletOutputStream out = response.getOutputStream();
int iLen = 0;
byte[] btBuffer = new byte[10240]; // Not sure about optimal buffer size
while ((iLen = fileIn.read(btBuffer)) != -1) {
out.write(btBuffer, 0, iLen);
}
facesContext.responseComplete();
out.close();
これらすべてを SSJS でも行うことができます。
guessContentTypeFromName
推測できない場合は、サーバー上の定義ファイルを変更する必要があります。または、ファイル タイプのセットが限られている場合は、MIME タイプ テーブルをコード/アプリケーションに配置できます。