SpringMVC实现文件上传

一、文件上传的原理:

SpringMVC实现文件上传

二、实现:

2.1导入依赖:增加commons-fileupload

<!--文件上传-->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

 2.2创建页面,在页面上提供表单:要符合文件上传的三要素

如果要实现文件上传:
客户端要满足一些条件:三要素
    1. 表单提交方式是POST
    2. 表单里要有 input type="file"
    3. 表单form标签上要加 enctype="multipart/form-data"
        如果不设置这个属性值,表单只会提交文件名称,而不会上传文件数据

 2.3 接收文件

@Controller
@RequestMapping("/file")
public class Demo04FileController {

    /**
     * 要接收客户端上传的文件,要求:
     *  1. 方法参数名称  和  客户端提交的表单参数名称 要相同
     *  2. 接收文件数据,参数类型是MultipartFile
     *  3. 在xml里配置文件解析器:CommonsMultipartResolver,把这个类注册bean对象放到IoC容器里
     */
    @RequestMapping("/upload1")
    public String upload1(String nickname, MultipartFile avatar) throws IOException {
        System.out.println(nickname);

        //1. 文件重命名
        //1.1 获取文件的原始名称   aaa.txt
        String originalFilename = avatar.getOriginalFilename();
        //1.2 截取得到文件的后缀名  .txt
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //1.3 生成一个新文件名称,文件名称不能重复。使用uuid(生成随机字符串的算法,生成32位长的随机字符串,每个字符是16进制的,几乎是永不重复的)
        String filename = UUID.randomUUID().toString() + suffix;


        //2. 把文件数据存储到磁盘上
        avatar.transferTo(new File("E:\\" + filename));

        return "success";
    }

 2.4配置文件解析器

<!-- 配置文件解析器。id值必须是multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8"/>
    <!--一次请求上传文件的最大尺寸,单位字节。-1表示不限制大小-->
    <property name="maxUploadSize" value="-1"/>
    <!--上传的每个文件的最大尺寸,单位字节。-1表示不限制-->
    <property name="maxUploadSizePerFile" value="-1"/>
</bean>

 

上一篇:一元N次多项式曲线拟合(求多项式参数)java实现


下一篇:服务器搭建Java-Web开发环境