SpringMVC文件上传的配置

记述一下步骤以备查。

准备工作:

需要把Jakarta Commons FileUpload及Jakarta Commons io的包放lib里。

我这边的包是:

commons-fileupload-1.1.1.jar

commons-io-1.3.2.jar

 

然后在spring-servlet.xml进行multipartResolver配置,不配置好上传会不好用。

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
          <property name="maxUploadSize"><value>100000</value></property> 
          <property name="defaultEncoding"><value>UTF-8</value></property> 
    </bean> 

 

接下来就是页面了:

注意Form的写法和文件上传组件的写法。

复制代码
    <form action="uploadPosdetailFile.html" method="post" ENCTYPE="multipart/form-data">
    <div class="form" >
            <p>
                <span class="req"><input id="startDateTxt"  name="startDateTxt" class="field size4" title="Enter the date" /></span>
                <label>Start Date: <span>(Date format:MM/dd/yyyy,eg:01/01/2014)</span></label>
            </p>
            
            <p>
                <span class="req"><input id="endDateTxt"  name="endDateTxt" class="field size4" title="Enter the date" /></span>
                <label>End Date: <span>(Date format:MM/dd/yyyy,eg:12/25/2014)</span></label>
            </p>
            
            <p>
                <span class="req"><input type="file"  name="uploadFileCtrl" class="field size4" title="Choose the file" /></span>
                <label>Upload file: <span>(click browse to choose)</span></label>
            </p>
    </div>
    
    <div class="buttons">
        <input id="queryBtn" type="Submit" class="button" value="Submit" />
    </div>
    
    </form>
复制代码

再在控制器里写处理代码,注意参数和页面控件的对应关系:

复制代码
    @RequestMapping(value="/uploadPosdetailFile")
    public String uploadPosdetailFile(@RequestParam("startDateTxt") String startDateTxt, 
                                  @RequestParam("endDateTxt") String endDateTxt,
                                  @RequestParam("uploadFileCtrl") MultipartFile file,HttpServletRequest request,HttpServletResponse response){
        try {
            System.out.println("@@@@@@@@@1.startDateTxt="+startDateTxt);
            System.out.println("@@@@@@@@@2.endDateTxt="+endDateTxt);
            System.out.println("@@@@@@@@@3.file="+file.getOriginalFilename());// 得到上传文件的文件名
            
            if(file.isEmpty()==false){
                InputStream is=file.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);

                 BufferedReader br=new BufferedReader(isr); 

                 String s;
                 while((s=br.readLine())!=null ){
                     System.out.println(s);
                 }

                br.close();
                isr.close();
                is.close();
            }
            
            
            return "/pages/posdetail/uploadposdetailresult/index.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);
            
            request.setAttribute("error", e.getClass());
            request.setAttribute("reason", e.getMessage());
            StackTraceElement[] arr=e.getStackTrace();
            request.setAttribute("stackTraceElements", arr);
            
            return "pages/error/index.jsp";
        }
    }
复制代码

 

posted @   逆火狂飙  阅读(22784)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2013-11-26 一个异常org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder:的解决
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示