• 踩坑の SpringMVC文件上传


    环境准备

    添加两个jar包
      commons-fileupload-1.2.2.jar
      commons-io-2.4.jar

    配置要求

    在springmvc.xml中配置multipart类型解析器

    <!-- 文件上传 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>
    

    前台表单

    <form name="form" action="${ctx}/user/upload.action" enctype="multipart/form-data" method="post">
        <input type="text" name="username" value="${user.username}" >
        <input type="text" name="password" value="${user.password}" >
        <input type="file" name="file">
    </form>
    

    细节:一定要记得加上enctype属性

    后台接收

    1. 方法一
      简单粗暴,SpringMVC会直接帮你封装到对应对象中
    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public String upload(User user, MultipartFile file){
        System.out.println(file.getOriginalFilename());
        //此处省略一万字...
    }
    
    1. 方法二
      也可以直接操作原始的请求和响应
    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public String upload(HttpServletRequest request, HttpServletResponse response){
        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;  
        MultipartFile mFile = mRequest.getFile("file");
        System.out.println(mFile.getOriginalFilename());
        //获取普通参数
        String username = mRequest.getParameter("username");
        //此处省略一万字...
    }
    

    那么问题来了

      这么简单明了的代码,我竟然上传时进不来后台,前台能够成功响应到对应地址,但确是空白页面!说实话工作时有第一种方法谁还这么闲情逸致专门去用第二种方法实现,又是一个几分钟的事情搞了我几个小时。表示再次怀疑自己浏览器还是编译器的问题,还是问问领导好了= =。看了几眼,的确不是代码的错(松了一口气,要不脸都丢光了哈哈哈)看来看去我自己也有点感觉了,项目配置的问题!业界大佬看到这里多半会心一笑(如果有的话啊哈哈哈),这么简单的问题还需要想的吗?咳咳,我也觉得,小白不是好称呼,要努力摆脱才行你说是吧。哦对了,之所以值得一提,因为我不上传文件时还有上传jpg时完全没毛病,就当作是掩饰自己是码畜的借口吧,一到上传apk就挂了,蒙蔽了双眼。这不后来,领导搜索对应文件的速度不是能比的,眨眼工夫就点开了文件的拦截器,实在惭愧,debug一下,改个配置文件,程序贼溜了起来,Σ( ° △ °|||)︴

    总结

      废话这么多,只是想记录一下踩过的坑,说不上以后忘得一干二净,起码回头想起来有东西查,不至于重头翻他人记录,说实话找资料挺烦,多半人实际内容差不多,只是可能吧,有些博主尚未尝试过就转载或是复制粘贴,有点反感,还是看过不少没营养的博文的=_=,还是以后看自己的算了啊哈哈哈

  • 相关阅读:
    ubuntu开启SSH服务
    Ubuntu修改虚拟内存(即swap空间)
    【转】Ubuntu 13.10中MyEclipse 10.6+下载+安装+破解
    【转】 ubuntu下安装mysql
    【转】 Ubuntu 11.04 下安装配置 JDK 7
    Linux非root用户安装jdk和tomcat
    algorithm之改变序列算法--待解决
    时间日期设置--ctime头文件
    C中的一些函数
    algorithm之不变序列操作
  • 原文地址:https://www.cnblogs.com/call-me-devil/p/8567892.html
Copyright © 2020-2023  润新知