檔案下載輸出流
阿新 • • 發佈:2019-01-27
public class FileDownLoadUtil {
public static Log log = LogFactory.getLog(FileDownLoadUtil .class);
public static void download(String filePath, HttpServletResponse response, String attachmentName) throws Exception {
// 判斷檔案是否存在
File file = new File(filePath);
log.info("下載檔案路勁:" + filePath);
if (!file.exists() || file.isDirectory()){
log.info("檔案不存在");
return;
}
log.info("檔案存在");
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(attachmentName, "UTF-8"));
InputStream in = null;
BufferedInputStream bis = null;
OutputStream out = null;
BufferedOutputStream bos = null;
try {
in = new FileInputStream(filePath);
bis = new BufferedInputStream(in);
byte[] data = new byte[1024];
int bytes = 0;
out = response.getOutputStream();
bos = new BufferedOutputStream(out);
while ((bytes = bis.read(data, 0, data.length)) != -1) {
bos.write(data, 0, bytes);
}
bos.flush();
} catch (Exception e) {
log.error("請求失敗" + e.getMessage(), e);
throw new Exception("請求失敗");
} finally {
try {
if (bos != null)
bos.close();
if (out != null)
out.close();
if (bis != null)
bis.close();
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static Log log = LogFactory.getLog(FileDownLoadUtil .class);
public static void download(String filePath, HttpServletResponse response, String attachmentName) throws Exception {
// 判斷檔案是否存在
File file = new File(filePath);
log.info("下載檔案路勁:" + filePath);
if (!file.exists() || file.isDirectory()){
log.info("檔案不存在");
return;
}
log.info("檔案存在");
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(attachmentName, "UTF-8"));
InputStream in = null;
BufferedInputStream bis = null;
OutputStream out = null;
BufferedOutputStream bos = null;
try {
in = new FileInputStream(filePath);
bis = new BufferedInputStream(in);
byte[] data = new byte[1024];
int bytes = 0;
out = response.getOutputStream();
bos = new BufferedOutputStream(out);
while ((bytes = bis.read(data, 0, data.length)) != -1) {
bos.write(data, 0, bytes);
}
bos.flush();
} catch (Exception e) {
log.error("請求失敗" + e.getMessage(), e);
throw new Exception("請求失敗");
} finally {
try {
if (bos != null)
bos.close();
if (out != null)
out.close();
if (bis != null)
bis.close();
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}