spring文件上传

Posted 这是一个博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring文件上传相关的知识,希望对你有一定的参考价值。

使用MultipartFile接口

使用Commons FileUpload组建上传,需要下载commons-fileupload-x.y.jar和commons-io-x.y.jar文件

1、配置文件:在spring-mvc.xml中添加

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="maxUploadSize" value="1073741824" /><!-- 上传大小限制-->
<property name="defaultEncoding" value="utf-8"></property>
<property name="resolveLazily" value="true"></property>

</bean>

 

2、控制器:

控制器接收一个MultipartFile file参数,

@RequestMapping(value = "/uploadfile.do")
 public @ResponseBody String saveProduct(HttpServletRequest rq,@RequestParam("file") MultipartFile file) {
/*
*调用文件处理工具类,也可以直接在控制器里写
*url为保存路径
*/

  saveFile(rq, file, url);

return "";
}

3、工具类(为了代码更简洁,把文件存储代码封装为一个类)

public class SaveFile {

    /**
     * @param rq
     *            request对象
     * @param file
     *            需要保存的文件
     * @param url
     *            文件保存路径类型
     * 
     * */
    public String saveImage(HttpServletRequest rq, MultipartFile file,
            String url) {
        File imageFile = null;
        String fileName = null;
        Date d=new Date();
        /*
         * 创建存储路径文件夹,在服务器目录下创建
         */
        File savePath = new File(rq.getServletContext().getRealPath(url));
        if (!savePath.exists()) {
            savePath.mkdirs();
        }
        if (null != file) {
            fileName = new Date().getTime()+new Random().nextInt(100)+file.getOriginalFilename();
            imageFile = new File(rq.getServletContext().getRealPath(+url),
                    fileName);

            try {
                file.transferTo(imageFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return url+"/"+fileName;
    }
}

4、前端提交

1、form表单提交需要在表单属性中添加enctype="multipart/form-data"

<form action="uploadfile.do" method="post"
enctype="multipart/form-data">
<input class="file" type="file" name="file" ></input>
</form>

2、ajax提交:需要通过FormData发送到服务端

 1 <input class="file" type="file" onchange="uploadLogo(this)"
 2                     name="logo" value="123"></input>
 3 
 4 
 5 
 6 
 7 function uploadLogo(file) {
 8         var fileReader = new FileReader();
 9         var path = "";
10         uploadImages(file.files[0])
11 
12     }
13 
14     function uploadImages(file) {
15         var form = new FormData();
16         form.append("logo", file);
17 
18         $.ajax({
19             type : "post",
20             url : "/PrySecret/uploadLogo.do",
21             data : form,
22             async : false,
23             cache : false,
24             contentType : false,
25             processData : false,
26             success : function(data, status) {
27 
28                 var path = "<c:url value=‘data‘/>"
29                 alert(data);
30                 $("#logo")[0].src = "http://localhost:8080/PrySecret/data/"
31                         + data;35             },
36             error : function() {
37                 alert("服务器异常");
38             },
39             complete : function() {
40 
41             }
42         });
43     }

以上是关于spring文件上传的主要内容,如果未能解决你的问题,请参考以下文章

spring实现文件上传(图片解析)

将存储在内存中的文件上传到s3

角度 Spring Boot 文件上传示例

spring 上传文件

spring 文件上传

Spring文件下载与上传 FormData