`
小杨学JAVA
  • 浏览: 886475 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java commons-fileupload 文件上传

 
阅读更多

转:http://www.cnblogs.com/popping57/p/3258956.html

使用servlet来实现

  1. 配置pom.xml
          <dependency>
    	<groupId>commons-fileupload</groupId>
    	<artifactId>commons-fileupload</artifactId>
    	<version>1.3</version>
          </dependency>
        
  2. servlet
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    	//创建一个文件处理工厂
    	FileItemFactory factory= new DiskFileItemFactory();
    
    	//创建一个存放临时中转的仓库
    	ServletContext servletContext = this.getServletConfig().getServletContext();
    	File repository = (File) servletContext.getAttribute("javax.servlet.context.temdir");
    	((DiskFileItemFactory) factory).setRepository(repository);
    		
    	//创建一个处理上传的处理器
    	ServletFileUpload upload = new ServletFileUpload(factory);
    	try {
    		//获取从表单提交上来的数据,从表单上传的数据会自动被分割,比如一个input:text,input:file,就会被分成两个item
    		List items = upload.parseRequest(req);
    		Iterator iter = items.iterator();
    		while (iter.hasNext()) {
    			FileItem item = iter.next();
    				
    			//检查是否是文件
    			if(item.isFormField()) {
    				//如果不是文件d
    				String name = item.getFieldName();
    				String value =item.getString();
    				System.out.println(name+":"+value);
    			}else {
    			    //如果是文件
    			    String fieldName = item.getFieldName();
    			    //这个fileName是上传文件名
    			    String fileName = item.getName();
    			    System.out.println(fieldName+":"+fileName);
    			    //新建一个文件,用于存储上传的文件
    			    File uploadFile = new File("D:\\",fileName);
    			    item.write(uploadFile);
    			}
    		}
    	} catch (FileUploadException e) {
    		e.printStackTrace();
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
       }
    
  3. 在web.xml中配置好servlet
  4. 前端页面
    <form action="/swfupload/fupload" enctype="multipart/form-data" method="post"></form>
     在这里,enctype的类型一定要是multipart/form-data,method要是post

使用spring mvc controller来实现

  1. 大部分都是和上面的一样,而配置spring mvc可以在前面的博客找到
  2. 配置controller
    	@RequestMapping(value="/upload.do",method=RequestMethod.POST)
    	public void upload(HttpServletRequest request, HttpServletResponse response) {
    		//定义一个文件上传工厂,配置一些上传限制
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		factory.setRepository(new File("D:\\"));
    		
    		//上传实现方法
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		try {
    			//获取表彰提交
    			List items = upload.parseRequest(request);
    			Iterator iter = items.iterator();
    			while (iter.hasNext()) {
    				FileItem item = iter.next();
    				
    				if (item.isFormField()) {
    					//当不是文件的时候
    					String filedName = item.getFieldName();
    					String value = item.getString();
    					System.out.println(filedName + ":" + value);
    				} else {
    					//是文件的时候
    					String fileName = item.getName();
    					String path = ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/");
    					System.out.println(path);
    					//新建一个文件,并以上传文件名为文件名
    					File uploadFile = new File(path,fileName);
    					//保存上传文件
    					item.write(uploadFile);
    				}
    			}
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    @RequestMapping指定了访问的路径和访问的类型
  3. 前台页面
    <form action="/swfupload/upload.do" enctype="multipart/form-data" method="post">
    其实swfupload是项目名
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics