SprngMVC方式实现文件上传

18 篇文章 0 订阅
6 篇文章 0 订阅

上篇使用传统servlet方式上传文件,还是比较复杂,而在SpringMVC中当然对此进行了封装,使我们不必再进行解析request中的信息,直接就可以上传

一、前置准备

两个依赖包

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.0.1</version>
        </dependency>

首先需要在springmvc-servlet.xml中配置解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8" />
             <!-- 指定所上传文件的总大小不能超过2048KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
             <property name="maxUploadSize" value="2048" />
         </bean>

二、相关知识

1、 在传统上传方式中,我们知道request.getParameter(String)方法获取指定的表单字段字符内容,但文件上传表单已经不在是字符内容,而是字节内容,所以失效。
但是在SpringMVC封装好的解析器下,我们可以使用request.getParameter(String)方法获取指定的表单字段
2、在控制器中传入的参数MultipartFile file1必须与变淡名字一致,否则不起效
3、表单中一些限制,如提交方式等于上文传统一致


三、单文件上传

jsp页面

<form action="${pageContext.request.contextPath}/File2/load" method="post" enctype="multipart/form-data">
    用户:<input type="text" name="username"><br/>
    密码:<input type="password" name="password"><br/>
    上传文件:<input type="file" name="file1"><br/>
    <input type="submit" value="提交">
</form>

控制器

    @RequestMapping(value = "/load",method = RequestMethod.POST)
    public String load(MultipartFile file1, HttpServletRequest request, String username) throws IOException {
        String existPath = request.getServletContext().getRealPath("/WEB-INF/upload/");
        System.out.println(username);
        //可以得到表单数据
        String password =request.getParameter("password");
        System.out.println(password);
        //得到文件名
        String filename = file1.getOriginalFilename();
        File file=new File(existPath);
        //直接写入文件
        file1.transferTo(new File(file,filename));
        return "FileYes";
    }


四、多文件上传

jsp页面

<h1>SpringMVC文件上传</h1>
<form action="${pageContext.request.contextPath}/File2/load" method="post" enctype="multipart/form-data">
    用户:<input type="text" name="username"><br/>
    密码:<input type="password" name="password"><br/>
    上传文件:<input type="file" name="file1"><br/>
    上传文件:<input type="file" name="file1"><br/>

    <input type="submit" value="提交">
</form>

值了使用数组接收数据

 @RequestMapping(value = "/load",method = RequestMethod.POST)
    public String load(MultipartFile[] file1, HttpServletRequest request) throws IOException {
        String existPath = request.getServletContext().getRealPath("/WEB-INF/upload/");

        File filePaths=new File(existPath);
       for(MultipartFile file:file1){
           //得到文件名
           String filename=file.getOriginalFilename();
           File existPaths=new File(filePaths,filename);
           //写入文件
           file.transferTo(existPaths);
       }
        return "FileYes";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值