d5e00481d64a004c621c0a0fa44c8856.png

之前做一个项目,需要修改头像,总结一下。文件上传方式:表单上传,ajax上传,插件上传等三种方式。

使用MultipartFile上传文件

1、介绍:springmvc官方提供的一个比较完善的文件上传组件。下面是它的两个实现类:

org.springframework.web.multipart.commons.CommonsMultipartFile
org.springframework.mock.web.MockMultipartFile

2、使用

加入依赖

<dependency>
    <groupId>commons-io</greadId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>commos-fileupload</groupId>
    <artifactId>commos-fileupload</artifactId>
    <version>1.4</version>
</dependency>

注意:前端传数据的时候要使用multipart/form-data格式来发送,不然后台无法接收到数据。

前端代码

1)如果是form表单的话,在form标签中加入 enctype="multipart/form-data"

<form action="/demo/uploadFile" method="post" enctype="multipart/form-data">
     <input type="file" name="meFile" /><p>
     <input type="submit" value="提交" /><p>
     <input type="reset" value="清空" /><p>
</form>

2)上传多文件的话,需要加入multiple="multiple"

<form action="/demo/uploadFile" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" multiple="multiple" /><p>
        <input type="submit" value="提交" /><p>
        <input type="reset" value="清空" /><p>
</form>

3)上传文件夹的话,需要加入 webkitdirectory directory

<form action="/demo/uploadFile" method="post" enctype="multipart/form-data">
     <input type="file" name="meFile" webkitdirectory directory /><p>
     <input type="submit" value="提交" /><p>
     <input type="reset" value="清空" /><p>
</form>

后端代码

1)单文件上传

@RequestMapping("/uploadFile")//上传文件
    public String UploadTheme(MultipartFile meFile,Model model){
        if (meFile != null) {
            System.out.println(meFile.getContentType());//在控制台打印文件的类型
            System.out.println(meFile.getName());//返回文件的名称
            System.out.println(meFile.getOriginalFilename());//返回文件的原文件名
            try {
                // 存放到一个位置
              meFile.transferTo(new File("E:/temp/"+UUID.randomUUID()+meFile.getOriginalFilename()));
            } catch (IllegalStateException e) {
                e.printStackTrace();
                model.addAttribute("msg", "上传失败");
                return "/error.html";
            } catch (IOException e) {
                e.printStackTrace();
                model.addAttribute("msg", "上传失败");
                return "/error.html";
            }
        }
        model.addAttribute("msg", "上传成功");
        return "index";
}

2)多文件上传

@RequestMapping("/temp")
    public String UploadFile(HttpServletRequest request,Model model){
        CommonsMultipartResolver cResolver = new CommonsMultipartResolver();
        if (cResolver.isMultipart(request)) {
            MultipartHttpServletRequest httpservletrequest = (MultipartHttpServletRequest) request;
            List<MultipartFile> list = httpservletrequest.getFiles("meFile");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).getOriginalFilename());
                System.out.println(list.get(i).getContentType());
                try {
                   list.get(i).transferTo(new File("D:/temp/"+UUID.randomUUID()+list.get(i).getOriginalFilename()));
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                    model.addAttribute("msg", "上传失败");
                    return "/error.html";
                } catch (IOException e) {
                    e.printStackTrace();
                    model.addAttribute("msg", "上传失败");
                    return "/error.html";
                }
            }
        }
        model.addAttribute("msg", "上传成功");
        return "index";
    }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐