SpringMvc文件上传

springmvc文件上传

表单的enctype属性指定的是表单数据的编码方式,该属性有3个值application/x-www-form-urlencoded:这是默认的编码方式,它只处理表单域里的value属性值;multipart/form-data:该编码以二进制流的方式来处理表单身数据,并将文件域指定文件的内容·封装到请求参数里面;text/plain:该编码方式只有当表单的action属性为"mailto"URL的形式时才使用,主要适用于直接通过表单发送文件的情况。
文件上传需要设置表单的enctype属性为multipart/form-data,这样才可以上传文件,为了在后台更方便的获取到文件需要引入commons-fileupload和commons-io。
这两个组件的依赖坐标如下:

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

单文件上传

表单页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <form method="post" action="${pageContext.request.contextPath}/user/multiFileUpload" enctype="multipart/form-data">
        选择文件:<input type="file" name="uploadfile"> <br>
        文件描述:<input type="text" name="name"> <br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

后台代码
这里通过MultipartFile 对象接收前台传过来的对象,通过MultipartFile 对象的getOriginalFilename()方法可以获取前台上传文件的名称,通过transferTo()方法可以将前台上传的文件保存。

/**
     * 单文件上传
     * @param username
     * @param uploadfile
     * @throws IOException
     */
    @RequestMapping("/fileload")
    @ResponseBody
    public void FileUpload(String name, MultipartFile uploadfile) throws IOException {
        System.out.println("name:" + name);
        System.out.println("uploadfile:" + uploadfile);
        String filename = uploadfile.getOriginalFilename();
        uploadfile.transferTo(new File("C:\\Users\\DELL\\Desktop\\" + filename));

    }

多文件上传

表单页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
 
    <form method="post" action="${pageContext.request.contextPath}/user/multiFileUpload" enctype="multipart/form-data">
        选择文件:<input type="file" name="uploadfile"> <br>
        选择文件:<input type="file" name="uploadfile"> <br>
        文件描述2:<input type="text" name="name"> <br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

后台代码
这里通过MultipartFile数组来接收前台上传的多个文件,然后循环保存文件。

 /*
    多文件上传
     */
    @RequestMapping("/multiFileUpload")
    @ResponseBody
    public void multipFileUpload(String name, MultipartFile[] uploadfile) throws IOException {
        for (MultipartFile file : uploadfile) {
            String filename = file.getOriginalFilename();
            System.out.println("filename:" + filename);
            file.transferTo(new File("C:\\Users\\DELL\\Desktop\\" + filename));
        }
    }

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值