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不行。现在还没找到解决办法

  • 相关阅读:
    【转】sql server编写通用脚本自动检查两个不同服务器的新旧数据库的表结构差异
    Pytest 2
    【转】python通过SMTP协议发送邮件失败,报错505或535
    【转】环境搭建之allure的安装配置,及简单使用
    Pytest 1
    替换姓名为隐式
    docker 用户组权限
    安装go环境
    Win10配置WSL2安装Ubuntu,并支持Nvidia CUDA 环境
    miniconda源配置
  • 原文地址:https://www.cnblogs.com/symen/p/4943027.html
Copyright © 2011-2022 走看看