zoukankan      html  css  js  c++  java
  • 表单传文件值读取不到

    method必须是post,enctype是multipart/formdata。开始我的表单是酱紫的:

    <form action="emotionUpload" method="post" enctype="multipart/form-data">
        zip文件<input type="file" name="file">
        zip门头照<input type="file" name="photo">
        文件名<input type="text" name="fileName">
        详情<input type="text" name="fileDetail">
        <input type="submit" value="上传">
    </form>
    	
    

    然后纠结了一下午为什么后台获取不到值,我直接用的req.getparameter,弄死获取不到。最后网上一通谷歌,发现酱紫不行。需要在upload的fileitem里面获取,个人认为是表单传的值都被封装成了一个FileItem的list,需要遍历这个list来获取传值。代码如下:

    DiskFileItemFactory factory = new DiskFileItemFactory();
    					factory.setSizeThreshold(1024*1000);
    					factory.setRepository(tmpFile);
    					
    					ServletFileUpload upload = new ServletFileUpload(factory);
    					upload.setProgressListener(new ProgressListener(){
    						public void update(long pBytesRead,long pContentLength,int arg2){
    							System.out.println("文件大小为:"+pContentLength+",当前处理进度:"+pBytesRead);
    						}
    						
    					});
    					upload.setHeaderEncoding("UTF-8");
    					
    					upload.setFileSizeMax(1024*1024);
    					upload.setSizeMax(1024*1024*10);
    					List<FileItem> list = upload.parseRequest(req);
    					for(FileItem item : list){
    		              //如果fileitem中封装的是普通输入项的数据
    		              if(item.isFormField()){
    		                  String name = item.getFieldName();
    		                  //解决普通输入项的数据的中文乱码问题
    		                  String value = item.getString("UTF-8");
    		                  //value = new String(value.getBytes("iso8859-1"),"UTF-8");
    		                  System.out.println(name + "=" + value);
    		                  if(name.equals("fileName")){
    		                	  strName = value;
    		                  }
    		                  else{
    		                	  strDetail = value;
    		                  }
    		              }else{//如果fileitem中封装的是上传文件
    

      

    然后又遇到傻逼问题,中文传值传过来是乱码。修改了jsp的编码,改成gb2312不行。然后改tomcat的编码uriencoding改成utf-8不行。现在还没找到解决办法

  • 相关阅读:
    xmind 8 readme
    【08】英语词汇速记大全1词根词缀记忆法
    【20180312】2018年03月12日(随想)
    大佬说
    github私有库购买信息
    【01】用构造器创建函数中的小知识
    【01】魔芋使用MDN的一点点经验
    10.12 telnet:远程登录主机
    10.11 arping:发送arp请求
    10.10 traceroute:追踪数据传输路由状况
  • 原文地址:https://www.cnblogs.com/symen/p/4943027.html
Copyright © 2011-2022 走看看