SpringMVC的文件上传
文件上传是一个项目里经常要用到的功能,SpringMVC通过配置一个MultipartResolver来上传文件。
在Spring的控制器中,通过MultipartFile file来接收文件,通过MultipartFile[] files接收多个文件上传。
在这里大概进行5步操作,就可以愉快的实现文件的上传
1.首先添加依赖
这个在第四章开始的时候我已经添加好了,可以简化io的操作
2.上传页面,在views下新建upload.jsp页面
3.添加转向upload页面的ViewController
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/index").setViewName("index");
registry.addViewController("/toUpload").setViewName("upload");
}
4.MultipartResolver配置
在这里要注意中文乱码问题,这时候我还没配置全局的字符编码,很容易遇到乱码问题
/**
* 上传文件配置
* 注意这里可以设置编码,防止中文乱码
*/
@Bean
public MultipartResolver multipartResolver(){
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(1000000);
multipartResolver.setDefaultEncoding("UTF-8");
return multipartResolver;
}
5.控制器
这里主要是接收到文件后放在磁盘上,可以查看磁盘文件来验证结果
package com.just.springmvc4.controller;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
public class UploadController {
@RequestMapping(value = "/upload",method = RequestMethod.POST)
public String uploadFile(MultipartFile file){
try {
FileUtils.writeByteArrayToFile(new File("D:\\file\\"+file.getOriginalFilename()),file.getBytes());
return "all is well";
}catch (Exception e){
e.printStackTrace();
return "wrong";
}
}
}
//TODO:这里还没有尝试多文件的上传,有空试下多个文件的上传操作再来展示一波
书接上回,尝试下多文件的上传,很简单,截几张图就能明白
1.jsp里面,采用多个input,每个name都一样,这个是很重要的,因为后端配置的是一个数组,只匹配一个name
2.后端controller
ok,all done.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100312.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...