Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  • 深圳市
  • 菜鸟工程师

最近留言

JAVA文件下载简单封装

2019年05月07 15:55 229 1 复制链接

简单封装下:

/**
* 从网络Url中下载文件
* @param response 响应对象
* @param URL 文件网络地址
* @param fileName 下载到本地的文件名称
* @param fileExt 文件后缀
* @param contentType 文件的contentType
*/
protected void downloadFromUrl(HttpServletResponse response, String URL, String fileName, String fileExt, String contentType) {
try {
URL url = new URL(URL);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
download(response, is, fileName, fileExt, contentType);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}

/**
* 下载文件
* @param response 响应对象
* @param is 输入流
* @param fileName 下载到本地的文件名称
* @param fileExt 文件后缀
* @param contentType 文件的contentType
*/
protected void download(HttpServletResponse response, InputStream is, String fileName, String fileExt, String contentType) {
if (null != is) {
response.reset(); // 必要地清除response中的缓存信息
response.setContentType(contentType);
try {
String encodeFileName = java.net.URLEncoder.encode(fileName + "." + fileExt, "UTF-8");
encodeFileName = encodeFileName.replaceAll("%28", "(");
encodeFileName = encodeFileName.replaceAll("%29", ")");
response.setHeader("Content-Disposition",
"attachment; filename=" + encodeFileName);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}

javax.servlet.ServletOutputStream out;
try {
out = response.getOutputStream();
byte[] content = new byte[1024]; // is.available()
int length = 0;
while ((length = is.read(content)) != -1) {
out.write(content, 0, length);
}
out.flush();
out.close();
is.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}


点赞(0)
本文标签java 下载 文件下载
点了个评