Resonseを使ってファイルをダウンロードすることを実現して、ブラウザーはべつにファイルの保存枠を弾いていません.
Resonseを使ってファイルをダウンロードすることを実現して、ブラウザーはべつにファイルの保存枠を弾いていません.
ファイルのダウンロードクラスはこのようです.
ファイルのダウンロードクラスはこのようです.
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author jwj
*/
public class FileUtil {
/**
*
* @param filePath url
* @param response
*/
public static void remoteFileDownload(String filePath,HttpServletResponse response) {
OutputStream outputStream = null;
InputStream inputStream = null;
URL url;
try {
url = new URL(filePath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();// HttpURLConnection , .
conn.setDoInput(true);
conn.connect();
int contentLength = conn.getContentLength();
inputStream = conn.getInputStream();
//
response.setContentLength(contentLength);
response.setHeader("Content-Disposition", "attachment;filename="+ filePath);//
response.setContentType("application/octet-stream");// response
outputStream = response.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = inputStream.read(buf))!=-1) {
outputStream.write(buf,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(outputStream !=null) {
outputStream.close();
}
if(inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用されたアドレスのアクセスは、ダウンロードが表示されますが、jsでajaxを要求すると、リターンのrequest headersは正常ですが、ダウンロードはありません.最後に、jsのajax関数の戻りのタイプはxml、text、json、htmlなどのタイプしかなくて、“流”のタイプがなくて、だから私達はajaxダウンロードを実現して、相応するajax関数を使ってファイルのダウンロードを行うことができません.しかし、jsでformを生成できます.==このformでパラメータを提出し、「ストリーム」タイプのデータを返します.==実現中もページは更新されませんでした.