文件下载代码
程序员文章站
2024-03-14 14:42:40
...
String id = params.get("id").toString();
BusFolderFileEntity busFolderFileEntity = busFolderFileService.queryObjectByFolderId(id);
String fileId = busFolderFileEntity.getFileId();
SysFileItemEntity fileItem = sysFileItemService.queryObject(fileId);
String filePath = fileItem.getFilePath();
// 数据库存放的文件名称
String fileName = fileItem.getFileName();
// 页面显示name
String showName = "";
String localPath = request.getServletContext().getRealPath("/");
File file = new File(localPath + filePath);
if (file.exists()) {
response.setContentType(request.getServletContext().getMimeType(fileName));// 设置强制下载不打开
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
try {
showName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
try {
showName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
response.addHeader("Content-Disposition", "attachment;filename=" + showName);
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = fis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(e.getCause());
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}