java web 上传文件和下载文件代码片段分享
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要为大家详细介绍了 java web 上传文件和下载文件代码片段, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
- /**
- * Purpose: 上传文档
- *
- * @param req
- * @param fileTitle
- * @param fileType
- * @param fileDesc
- * @return
- */
- @RequestMapping("upload") public ModelAndView upload(HttpServletRequest req, String fileType, String fileDesc, String share) {
- UserAllInfo userAll = (UserAllInfo) req.getSession().getAttribute("userAll");
- ModelAndView mav = new ModelAndView();
- // 获取文件的大小
- String fileSize = "";
- int length = req.getContentLength();
- // 转换成 KB
- double len1 = (double)(Math.round((length / 1024) * 100)) / 100;
- // 转换成 MB
- double len2 = (double)(Math.round((len1 / 1024) * 100)) / 100;
- if (len2 > 1) {
- fileSize = String.valueOf(len2) + "MB";
- } else {
- fileSize = String.valueOf(len1) + "KB";
- }
- // 将请求转换成处理文件的请求
- MultipartRequest mreq = (MultipartRequest) req;
- // 文件上传专用类
- MultipartFile mfile = mreq.getFile("uploadFile");
- // 得到上下文路径
- String root = req.getSession().getServletContext().getRealPath("/");
- File dir = new File(root);
- // 获取文件名和文件的 mime 类型
- String str = mfile.getOriginalFilename();
- String[] st = str.split("\\.");
- File savedFile = null;
- try {
- // 在指定目录中创建一个新的空文件, 文件名称加前缀 "upload_"
- savedFile = File.createTempFile("upload_", mfile.getOriginalFilename(), dir);
- // 将缓冲区的内容复制到新创建的文件中
- FileCopyUtils.copy(mfile.getInputStream(), new FileOutputStream(savedFile));
- } catch(Exception e) {
- e.printStackTrace();
- }
- String path = savedFile.getPath();
- // 将文件的信息封装在对象中
- FileInfo file = new FileInfo();
- if (userAll != null) {
- file.setUploadPersonId(userAll.getUser().getUserId());
- } else {
- mav.setViewName("login");
- return mav;
- }
- file.setFileName(st[0]);
- file.setFilePath(path);
- Date date = new Date();
- file.setUploadDate(date);
- file.setFileSize(fileSize);
- file.setFileType(fileType);
- file.setFileForm(st[1]);
- if ("superman".equals(userAll.getUser().getUserNumber())) {
- file.setFileShare("Y");
- file.setCheckFlag("Y");
- } else {
- file.setFileShare(share);
- file.setCheckFlag("N");
- }
- file.setDeleteFlag("N");
- file.setDownloadTimes(0);
- // 保存文件的信息
- boolean bool = fileSer.saveFile(file);
- String userNumber = userAll.getUser().getUserNumber();
- // 设置跳转界面
- mav.setViewName("jsp/person/upload");
- logSer.saveLog("用户 \"" + userNumber + "\" 上传文件 \"" + file.getFileName() + "\"");
- mav.getModel().put("bool", bool);
- return mav;
- }
- /**
- * Purpose: 下载文档
- *
- * @param fileId 文件 id
- * @return
- */
- @RequestMapping("download") public void download(Integer fileId, HttpServletResponse resp) {
- FileInfo file = new FileInfo();
- // 通过文件 id 获取文件的基本信息
- file = fileSer.getFileById(fileId);
- // 根据文件后缀名设置文件的 mime 类型
- String mime = "application/";
- switch (file.getFileForm()) {
- case "doc":
- mime = mime + "msword";
- break;
- case "docx":
- mime = mime + "msword";
- break;
- case "pdf":
- mime = mime + "pdf";
- break;
- case "xls":
- mime = mime + "vnd.ms-excel";
- case "ppt":
- mime = mime + "vnd.ms-powerpoint";
- break;
- case "txt":
- mime = "text/plain";
- break;
- default:
- break;
- }
- resp.setContentType(mime);
- String fileName = file.getFileName();
- String name = "";
- try {
- // 将文件名使用 utf-8 编码格式编码, 使其中的中文字符可以正常显示
- name = URLEncoder.encode(fileName, "utf-8");
- } catch(UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
- // 弹框选择保存路径
- resp.setHeader("content-disposition", "attachment;filename=" + name + "." + file.getFileForm() + ";filename*=utf-8''" + name + "." + file.getFileForm());
- String filePath = file.getFilePath();
- InputStream is = null;
- OutputStream os = null;
- try {
- is = new BufferedInputStream(new FileInputStream(filePath));
- os = new BufferedOutputStream(resp.getOutputStream());
- byte[] buff = new byte[1024];@SuppressWarnings("unused") int count;
- while ((count = is.read(buff)) != -1) {
- os.write(buff);
- }
- // 修改下载次数
- fileSer.update(fileId);
- } catch(Exception e) {
- e.printStackTrace();
- } finally {
- // 最后, 要记得关闭输入流和输出流
- if (is != null) {
- try {
- is.close();
- } catch(IOException e) {
- e.printStackTrace();
- }
- }
- if (os != null) {
- try {
- os.close();
- } catch(IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
来源: http://www.phperz.com/article/18/0209/358698.html