您的位置:首页 > 编程语言 > Java开发

javaweb项目中的文件上传下载功能的实现

2018-09-19 15:37 531 查看

上传:

[code]@RequestMapping("/upload")
public @ResponseBody res upload(HttpSession session,MultipartFile file) throws IllegalStateException, IOException {
// 原文件名称
String oldName = file.getOriginalFilename();
// 新文件名称
String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));
// 上传文件
File nfile = new File("F:/temp/" + newName);
if (!nfile.exists()) {
nfile.mkdirs();
}
session.setAttribute("filename", newName);
// 向磁盘写文件
file.transferTo(nfile);
res res = new res();
res.setCode(0);
return res;
}

下载:

[code]@RequestMapping("/download")
public String download( String fileName ,String filePath, HttpServletRequest request, HttpServletResponse response){
response.setContentType("text/html;charset=utf-8");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

java.io.BufferedInputStream bis = null;
java.io.BufferedOutputStream bos = null;

String downLoadPath = filePath;  //注意不同系统的分隔符
//	String downLoadPath =filePath.replaceAll("/", "\\\\\\\\");   //replace replaceAll区别 *****
System.out.println(downLoadPath);

try {
long fileLength = new File(downLoadPath).length();
response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (bos != null)
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "forward:;
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: