最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java web上传文件和下载文件代码片段分享
时间:2017-03-04 编辑:简简单单 来源:一聚教程网
代码如下 | 复制代码 |
/** * Purpose:上传文档 * * @param req * @param fileTitle * @param fileType * @param fileDesc * @return */ @RequestMapping("upload") publicModelAndView upload(HttpServletRequest req, String fileType, String fileDesc, String share) { UserAllInfo userAll = (UserAllInfo) req.getSession().getAttribute("userAll"); ModelAndView mav =newModelAndView(); // 获取文件的大小 String fileSize =""; intlength = req.getContentLength(); //转换成KB doublelen1 = (double) (Math.round((length /1024) *100)) /100; //转换成MB doublelen2 = (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 =newFile(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(),newFileOutputStream(savedFile)); }catch(Exception e) { e.printStackTrace(); } String path = savedFile.getPath();
// 将文件的信息封装在对象中 FileInfo file =newFileInfo(); if(userAll !=null) { file.setUploadPersonId(userAll.getUser().getUserId()); }else{ mav.setViewName("login"); returnmav; } file.setFileName(st[0]); file.setFilePath(path); Date date =newDate(); 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); // 保存文件的信息 booleanbool = fileSer.saveFile(file); String userNumber = userAll.getUser().getUserNumber(); //设置跳转界面 mav.setViewName("jsp/person/upload"); logSer.saveLog("用户\""+ userNumber +"\"上传文件\""+ file.getFileName() +"\""); mav.getModel().put("bool", bool); returnmav; }
/** * Purpose:下载文档 * * @param fileId 文件id * @return */ @RequestMapping("download") publicvoiddownload(Integer fileId, HttpServletResponse resp) { FileInfo file =newFileInfo(); //通过文件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 =newBufferedInputStream(newFileInputStream(filePath)); os =newBufferedOutputStream(resp.getOutputStream()); byte[] buff =newbyte[1024]; @SuppressWarnings("unused") intcount; 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(); } } } } |
-
上一个: Java动态添加view的方法
相关文章
- ckeditor解决上传文件路径方法 11-01
- java中使用Struts 2框架上传文件代码 10-31
- 让你同时上传1000个文件 03-12
- 改变上传文件框的样式 01-16
- 通过Web Services上传和下载文件 01-12
- 让javamail直接添加上传文件为附件的DataSource代码 01-12