代碼示例
package com.simple.util.http;
import com.simple.util.io.IOUtil;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
/**
* @program: simple_tools
* @description: 文件下載工具類
* @author: Mr.chen
* @create: 2020-06-09 09:49
**/
public class DownloadFileUtil {
/**
* 下載文件
*
* @param response
* @param file
* @param finishDeleteFile
* 下載完成之後是否需要刪除文件
*/
public static void download(HttpServletResponse response, File file, boolean finishDeleteFile) {
FileInputStream fis = null;
ServletOutputStream out = null;
try {
// 1.設置文件ContentType類型,這樣設置,會自動判斷下載文件類型
response.setContentType("application/octet-stream");
String downLoadName = new String(file.getName().getBytes("UTF-8"), "iso8859-1");
// 2.設置文件頭:最後一個參數是設置下載文件名(假如我們叫a.pdf)
response.setHeader("Content-Disposition", "attachment;fileName=" + downLoadName);
response.setHeader("Content-Length", String.valueOf(file.length()));
fis = new FileInputStream(file);
out = response.getOutputStream();
int b = 0;
byte[] buffer = new byte[1024];
while ((b = fis.read(buffer)) != -1) {
out.write(buffer, 0, b);
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtil.close(out);
IOUtil.close(fis);
if (finishDeleteFile) {
if ((file != null) && file.exists()) {
file.delete();
}
}
}
}
}