mvc文件上传下载|springmvc中实现文件上传时需要注意哪些事项 csdn

㈠ 如何使用springmvc实现文件上传

在现在web应用的开发,springMvc使用频率是比较广泛的,现在给大家总结一下springMvc的上传附件的应用,希望对大家有帮助,废话不多说,看效果

准备jar包

4.准备上传代码@Controller//spring使用注解管理bean@RequestMapping("/upload")//向外暴露资源路径,访问到该类public class UploadController {/*** 上传功能* @return* @throws IOException*/@RequestMapping("/uploadFile")//向外暴露资源路径,访问到该方法public String uploadFile(MultipartFile imgFile,HttpServletRequest req) throws IOException{if(imgFile != null ){//获取文件输入流InputStream inputStream = imgFile.getInputStream();//随机产生文件名,原因是:避免上传的附件覆盖之前的附件String randName = UUID.randomUUID().toString();//随机文件名//获取文件原名String originalFilename = imgFile.getOriginalFilename();//获取文件后缀名(如:jpgpng…)String extension = FilenameUtils.getExtension(originalFilename);//新名字String newName = randName+"."+extension;//获取servletContextServletContext servletContext = req.getSession().getServletContext();//获取根路径String rootPath = servletContext.getRealPath("/");File file = new File(rootPath,"upload");//判断文件是否存在,若不存在,则创建它if(!file.exists()){file.mkdirs();}//获取最终输出的位置FileOutputStream fileOutputStream = new FileOutputStream(new File(file,newName));//上传附件IOUtils.(inputStream, fileOutputStream);}return null;}}

㈡ springmvc中实现文件上传时,需要注意哪些事项 csdn

首先 spring mvc文件上传需要配置的节点

<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><propertyname="maxUploadSize"value="209715000"/><!–限制上传最大为200MB–><!–4MB4194304–><propertyname="defaultEncoding"value="UTF-8"/><propertyname="resolveLazily"value="true"/></bean>

限制文件大小,设置编码字回符集,resolveLazily 是捕获文件过大所答需。

然后在后台接收页面,提交文件类型的文件 自己保存即可

㈢ 请教spring mvc 的文件上传

springmvc文件上传1.加入jar包:commons-fileupload-1.2.2.jarcommons-io-2.0.1.jarlperson.java中加属性,实现get ,set方法private String photoPath;2.创建WebRoot/upload目录,存放上传的文件1 <sf:form id="p" action="saveOrUpdate" 2 method="post" 3 modelAttribute="person" 4 enctype="multipart/form-data">5 6 <sf:hidden path="id"/> 7 name: <sf:input path="name"/><br>8 age: <sf:input path="age"/><br>9 photo: <input type="file" name="photo"/><br>上面第9行文件上传框,不能和实体对象属性同名,类型不同 controller配置1 12、文件上传功能实现 配置文件上传解析器 2 @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST) 3 public String saveOrUpdate(Person p, 4 @RequestParam("photo") MultipartFile file, 5 HttpServletRequest request 6 ) throws IOException{ 7 if(!file.isEmpty()){ 8 ServletContext sc = request.getSession().getServletContext(); 9 String dir = sc.getRealPath(“/upload”); //设定文件保存的目录10 11 String filename = file.getOriginalFilename(); //得到上传时的文件名12 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());13 14 p.setPhotoPath(“/upload/”+filename); //设置图片所在路径15 16 System.out.println("upload over. "+ filename);17 } 18 ps.saveOrUpdate(p); 19 return "redirect:/person/list.action"; //重定向20 }3.文件上传功能实现 spring-mvc.xml 配置文件上传解析器1 <!– 文件上传解析器 id 必须为multipartResolver –>2 <bean id="multipartResolver" 3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">4 <property name="maxUploadSize" value=“10485760"/> 5 </bean>6 7 maxUploadSize以字节为单位:10485760 =10M id名称必须这样写1 映射资源目录2 <mvc:resources location="/upload/" mapping="/upload/**"/>随即文件名常用的三种方式:文件上传功能(增强:防止文件重名覆盖)fileName = UUID.randomUUID().toString() + extName;fileName = System.nanoTime() + extName;fileName = System.currentTimeMillis() + extName;1 if(!file.isEmpty()){ 2 ServletContext sc = request.getSession().getServletContext(); 3 String dir = sc.getRealPath("/upload"); 4 String filename = file.getOriginalFilename(); 5 6 7 long _lTime = System.nanoTime(); 8 String _ext = filename.substring(filename.lastIndexOf(".")); 9 filename = _lTime + _ext;10 11 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());12 13 p.setPhotoPath("/upload/"+filename);14 15 System.out.println("upload over. "+ filename);16 }图片显示 personList.jsp 1 <td><img src="${pageContext.request.contextPath}${p.photoPath}">${p.photoPath}</td>

㈣ 用spring mvc 如何实现对excel文件的下载和上传

我现在也在做这个,我用的是阿帕奇提供的poi

㈤ springmvc怎么上传文件

SpringMVC上传文件的三种方式前台:<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><form name="serForm" action="/SpringMVC006/fileUpload" method="post" enctype="multipart/form-data"><h1>采用流的方式上传文件</h1><input type="file" name="file"><input type="submit" value="upload"/></form> <form name="Form2" action="/SpringMVC006/fileUpload2" method="post" enctype="multipart/form-data"><h1>采用multipart提供的file.transfer方法上传文件</h1><input type="file" name="file"><input type="submit" value="upload"/></form> <form name="Form2" action="/SpringMVC006/springUpload" method="post" enctype="multipart/form-data"><h1>使用spring mvc提供的类的方法上传文件</h1><input type="file" name="file"><input type="submit" value="upload"/></form></body></html>配置: <!– 多部分文件上传 –><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="104857600" /> <property name="maxInMemorySize" value="4096" /> <property name="defaultEncoding" value="UTF-8"></property></bean>后台:方式一: /* * 通过流的方式上传文件 * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象 */ @RequestMapping("fileUpload") public String fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException { //用来检测程序运行时间 long startTime=System.currentTimeMillis(); System.out.println("fileName:"+file.getOriginalFilename()); try { //获取输出流 OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename()); //获取输入流 CommonsMultipartFile 中可以直接得到文件的流 InputStream is=file.getInputStream(); int temp; //一个一个字节的读取并写入 while((temp=is.read())!=(-1)) { os.write(temp); } os.flush(); os.close(); is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } long endTime=System.currentTimeMillis(); System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms"); return "/success"; }方式二:/* * 采用file.Transto 来保存上传的文件 */ @RequestMapping("fileUpload2") public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException { long startTime=System.currentTimeMillis(); System.out.println("fileName:"+file.getOriginalFilename()); String path="E:/"+new Date().getTime()+file.getOriginalFilename(); File newFile=new File(path); //通过CommonsMultipartFile的方法直接写文件(注意这个时候) file.transferTo(newFile); long endTime=System.currentTimeMillis(); System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms"); return "/success"; }方式三:/* *采用spring提供的上传文件的方法 */ @RequestMapping("springUpload") public String springUpload(HttpServletRequest request) throws IllegalStateException, IOException { long startTime=System.currentTimeMillis(); //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器) CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver( request.getSession().getServletContext()); //检查form中是否有enctype="multipart/form-data" if(multipartResolver.isMultipart(request)) { //将request变成多部分request MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request; //获取multiRequest 中所有的文件名 Iterator iter=multiRequest.getFileNames(); while(iter.hasNext()) { //一次遍历所有文件 MultipartFile file=multiRequest.getFile(iter.next().toString()); if(file!=null) { String path="E:/springUpload"+file.getOriginalFilename(); //上传 file.transferTo(new File(path)); } } } long endTime=System.currentTimeMillis(); System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms"); return "/success"; }我们看看测试上传的时间:第一次我用一个4M的文件:fileName:test.rar方法一的运行时间:14712msfileName:test.rar方法二的运行时间:5ms方法三的运行时间:4ms第二次:我用一个50M的文件方式一进度很慢,估计得要个5分钟方法二的运行时间:67ms方法三的运行时间:80ms从测试结果我们可以看到:用springMVC自带的上传文件的方法要快的多!对于测试二的结果:可能是方法三得挨个搜索,所以要慢点。不过一般情况下我们是方法三,因为他能提供给我们更多的方法

㈥ springmvc怎么实现多文件上传

多文件上传其实很简单,和上传其他相同的参数如checkbox一样,表单中使用相同的名称,然后action中将MultipartFile参数类定义为数组就可以。接下来实现:1、创建一个上传多文件的表单:在CODE上查看代码片派生到我的代码片<body><h2>上传多个文件 实例</h2><form action="filesUpload.html" method="post"enctype="multipart/form-data"><p>选择文件:<input type="file" name="files"><p>选择文件:<input type="file" name="files"><p>选择文件:<input type="file" name="files"><p><input type="submit" value="提交"></form></body> 2、编写处理表单的action,将原来保存文件的方法单独写一个方法出来方便共用:[java] view plain print?在CODE上查看代码片派生到我的代码片/**** 保存文件* @param file* @return*/private boolean saveFile(MultipartFile file) {// 判断文件是否为空if (!file.isEmpty()) {try {// 文件保存路径String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"+ file.getOriginalFilename();// 转存文件file.transferTo(new File(filePath));return true;} catch (Exception e) {e.printStackTrace();}}return false;}3、编写action:@RequestMapping("filesUpload")public String filesUpload(@RequestParam("files") MultipartFile[] files) {//判断file数组不能为空并且长度大于0if(files!=null&&files.length>0){//循环获取file数组中得文件for(int i = 0;i<files.length;i++){MultipartFile file = files[i];//保存文件saveFile(file);}}// 重定向return "redirect:/list.html";}

㈦ spring+spring mvc+ hibernate框架里怎么实现图片的上传,下载,展示功能

这个嘛 只和SpringMVC有点关系。 前端提交的文件,由springmvc拦截进行处理。您可以使用上传插件。比如网络上传插件:Web Uploader。怎么用的话,官网有Demo。也有API文档,可以自行查阅。当然不用插件的话,也可以自己做个简单的,用Form表单提交到后台,后台对文件进行保存,展示的话直接用<img src='xxx路径'>。您可以自己组织语言网络搜索一下代码怎么写。上传文件实际上就是传输一些数据到后台,然后使用java把这些数据保存到硬盘上,前端直接根据路径来进行访问。

㈧ 用JSP(MVC模式)实现文件的打包下载功能

你的意思是将多个文件同时加载,我现在自己做了一个多文件同时上传的,但是下载的时候还是一个一个的下载!!也使用MVC模式开发的!!! 给你看一下,多文件上传和下载的代码,我自己写的,打包下载我还没有实现,如果你有什么好的想法,告诉我一下哦!!吼吼~~多文件上传代码:NetdishForm ndf = (NetdishForm) form;List fileNameList=new ArrayList();//得到上传文件的文件名,并且将所有的文件名称保存在LIST数组中 fileNameList.add(ndf.getUpfile().getFileName()); fileNameList.add(ndf.getUpfile2().getFileName()); fileNameList.add(ndf.getUpfile3().getFileName()); fileNameList.add(ndf.getUpfile4().getFileName()); fileNameList.add(ndf.getUpfile5().getFileName());for(int i=0;i<fileNameList.size();i++) { selectedFileName=String.valueOf(fileNameList.get(i));//根据循环次数,依次获取文件名 try { upLoadNetDishPath=photodir.getCanonicalPath()+"\\"+selectedFileName; System.out.println("最终路径为:"+upLoadNetDishPath); OutputStream ops=new FileOutputStream(upLoadNetDishPath); if(i==0) { byte b[]=ndf.getUpfile().getFileData(); ops.write(b); ops.close(); } if(i==2) { byte b[]=ndf.getUpfile2().getFileData(); ops.write(b); ops.close(); } if(i==3) { byte b[]=ndf.getUpfile3().getFileData(); ops.write(b); ops.close(); } if(i==4) { byte b[]=ndf.getUpfile4().getFileData(); ops.write(b); ops.close(); } if(i==5) { byte b[]=ndf.getUpfile5().getFileData(); ops.write(b); ops.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }这是上传的核心代码,至于路径的自动创建我没有弄上来!!下载的代码://以下为下载的主要方法 File file=new File(nd.getDownpath()); if(file.exists()) { System.out.println("该下载路径或者文件已存在"); try{ //输出文件用的字节数组,每次发送500个字节到输出流: byte b[]=new byte[500]; //客户使用保存文件的对话框: response.setHeader("Content-disposition","attachment;filename="+nd.getFilename()); //设置文件下载时的名称。如果只在线观看,将attachment改成inline //通知客户文件的MIME类型: response.setContentType("text/plain"); //通知客户端浏览器文件的类型。 //通知客户文件的长度: long fileLength=file.length();//取得文件的长度。 String length=String.valueOf(fileLength); response.setHeader("Content_Length",length); //设置文件的长度 response.setCharacterEncoding("gbk"); //读取文件,并发送给客户下载: FileInputStream in=new FileInputStream(file); OutputStream o=response.getOutputStream(); int n=0; while((n=in.read(b))!=-1) { o.write(b,0,n); //以文件流的形式写客户端。 } in.close(); o.close(); } catch(Exception e){ }}else{ System.out.println("该文件已被用户删除"); return new ActionForward("/netdish_show.jsp?downloadflag=downloadfaild"); } }这是下载的,但是只是单个文件的下载,打包下载我还没有弄,如果你弄出来了给我说一下呗,我现在还没有思路了!呵呵!!共同学习么!(我之前想过其保存在List然后通过遍历做,但是那样的话效果就不大一样了!!)

㈨ springmvc怎么实现文件上传

springmvc怎么实现文件上传package com.test.controller; import java.io.File;import java.util.Map; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; import org.apache.commons.io.FilenameUtils;import org.apache.commons.lang3.ArrayUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.commons.CommonsMultipartFile; import com.test.servlet.NoSupportExtensionException;import com.test.servlet.State; @Controller@RequestMapping(value = "/mvc")public class UploadController { /** 日志对象*/ private Log logger = LogFactory.getLog(this.getClass()); private static final long serialVersionUID = 1L; /** 上传目录名*/ private static final String uploadFolderName = "uploadFiles"; /** 允许上传的扩展名*/ private static final String [] extensionPermit = {"txt", "xls", "zip"}; @RequestMapping(value = "/upload.do", method = RequestMethod.POST) public @ResponseBody Map<String, Object> fileUpload(@RequestParam("file") CommonsMultipartFile file, HttpSession session, HttpServletRequest request, HttpServletResponse response) throws Exception{ logger.info("UploadController#fileUpload() start"); //清除上次上传进度信息 String curProjectPath = session.getServletContext().getRealPath("/"); String saveDirectoryPath = curProjectPath + "/" + uploadFolderName; File saveDirectory = new File(saveDirectoryPath); logger.debug("Project real path [" + saveDirectory.getAbsolutePath() + "]"); // 判断文件是否存在 if (!file.isEmpty()) { String fileName = file.getOriginalFilename(); String fileExtension = FilenameUtils.getExtension(fileName); if(!ArrayUtils.contains(extensionPermit, fileExtension)) { throw new NoSupportExtensionException("No Support extension."); } file.transferTo(new File(saveDirectory, fileName)); } logger.info("UploadController#fileUpload() end"); return State.OK.toMap(); } }


赞 (0)