zoukankan      html  css  js  c++  java
  • SpringMVC使用FileUpload上传文件

    进口FileUpload和common-io的Jar包

    注意:1、Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiPartRequestWrapper

    1、Test.jsp:

    <form action="<%=basePath%>self/testFileUpload.do" method="post" enctype="multipart/form-data">
        	<input type="text" name="num">
        	<input name="img1" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
        	<input name="img2" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
        	<input type="submit" name="test">
        	<input type="reset" name="test1">
        </form>

    2、controller:

    @RequestMapping(value="/testFileUpload")
    	public void  testFileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception{
    		String num = "";
    		String img1 = "";
    		String img2 = "";
    		String fileName = "";
    		try {
    			String t = request.getCharacterEncoding();
    			boolean isMultipart = ServletFileUpload.isMultipartContent(request);//推断是否是表单文件类型
    			if(isMultipart){
    				DiskFileItemFactory factory = new DiskFileItemFactory();
    				ServletFileUpload upload = new ServletFileUpload(factory);
    				upload.setHeaderEncoding(request.getCharacterEncoding());//这里非常重要啊 解决linux环境下上传文件名称乱码的问题
    				//upload.setFileSizeMax(3*1024*1024);//3M
    				List items = upload.parseRequest(request);
    				if(items.size() == 0){
    					System.out.println("无数据");
    				}
    				Iterator<Object> formItem = items.iterator();
    				while(formItem.hasNext()){
    					FileItem item = (FileItem) formItem.next();
    					//假设是表单元素
    					if(item.isFormField()){
    						if (item.getFieldName().equals("num")) {
    							num = item.getString(request.getCharacterEncoding()).trim();
    						}
    					}
    					//假设不是表单元素
    					if(!item.isFormField()){
    						String name = item.getName();
    						String type = item.getContentType();
    						long sizeInBytes = item.getSize();
    						
    						try {
    							String fullName = item.getName().trim();
    							if(fullName != ""){
    								fileName = System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
    								if(item.getFieldName().equals("img1")){
    									fileName = "img1-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
    								}
    								if(item.getFieldName().equals("img2")){
    									fileName = "img2-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
    								}
    								String tomcatRoot = FileOperator.getRootPath();
    								String path = tomcatRoot;
    								if(FileOperator.FileUploadEx(path, fileName, item.getSize(), item.getInputStream())){
    									if(item.getFieldName().equals("img1")){
    										System.out.println("testimg1");
    									}
    									if(item.getFieldName().equals("img2")){
    										System.out.println("testimg2");
    									}
    								}
    							}
    							
    						} catch (Exception e) {
    							e.printStackTrace();
    						}
    					}
    				}
    			}else{
    				System.out.println("非multipart/form-data提交方式");
    			}
    			
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Js 内存泄露追踪
    [导入]关于在ashx页面中使用Session的问题
    [导入]通过SQL语句删除重复记录
    javascript也玩pageLoad
    判断是否首次触发pageLoad 与 PageRequestManager.getInstance()对象的几个事件触发顺序
    ASP.NET Web下基于Forms的验证
    [导入]用程序来还原数据库(一个遗留了两年的问题)
    [导入]自己编写QQ挂机软件基于HTTP的QQ协议之我所见
    iis 中后台调用exe文件
    ORA12154: TNS:could not resolve the connect identifier spec
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4634845.html
Copyright © 2011-2022 走看看