SpringMVC上传文件配置

SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的。 所以,如果要实现文件的上传,只要在 spring-mvc.xml 中注册相应的 MultipartResolver 即可。
MultipartResolver 的实现类有两个:

  1. CommonsMultipartResolver
  2. StandardServletMultipartResolver

两个的区别:

  1. 第一个需要使用 Apache 的 commons-fileupload 等 jar 包支持,但它能在比较旧的 servlet 版本中使用。
  2. 第二个不需要第三方 jar 包支持,它使用 servlet 内置的上传功能,但是只能在 Servlet 3 以上的版本使用。
  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver ">      <property name="maxUploadSize" value="104857600" />          
     <property name="defaultEncoding" value="UTF‐8"></property>         
 </bean>

maxUploadSize: 设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示 无限制,默认是-1。

defaultEncoding:表示用来解析request请求的默认编码格式,当没有指定的时候根据 Servlet规范会使用默认值ISO-8859-1。当request自己指明了它的编码格式的时候就会忽 略这里指定的defaultEncoding。

@RestController
@RequestMapping("/upload")
public class UploadController {
@Autowired
private HttpServletRequest request;
@PostMapping("/native")
public String nativeUpload(@RequestParam("file")MultipartFile file){ //@RequestParm指定传过来的参数名
    String path=request.getSession().getServletContext().getRealPath("img"); //获取项目运行的真实路径
    String filePath=path+"/"+file.getOriginalFilename(); //项目路径+文件名
    File desFile=new File(filePath);
    if(!desFile.getParentFile().exists()){//判断目录是否存在,不存在则创建
        desFile.mkdirs(); 
    }
    try {
        file.transferTo(desFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "http://localhost:8080/img/"+file.getOriginalFilename();
}

}

MultipartFile是springMVC提供的文件对象,代表HTML中form data方式上传的文件,包含二进制数据 +文件名称

这是本地上传的例子,上传的本地服务器.

Last modification:November 4th, 2019 at 06:27 pm

Leave a Comment