1.springmvc.xml中上传配置:
<!-- 多部分文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
2.控制器(Controller)中接收请求的代码
/**
* @Description 上传图片
* @Author 刘俊重
* @Date 2017/6/12
*/
@IgnoreAuth
@PostMapping("uploadImage")
@ResponseBody
public Out uploadImage( HttpServletRequest request) throws IOException{
// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
multipartResolver.setDefaultEncoding("utf-8"); //设置编码
String res = null;
// 检查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()) {// 一次性遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null) {
String name = FileUtil.getOSSFile(file);
InputStream input = file.getInputStream();
OSSClient client = ossFactory.getClient();
OSSUtil.putObject(input,file.getSize(), client, SystemVar.OSS_BUCKET, name);
res = SystemVar.OSS_URL+name;
}
}
}
return Out.ok().put("path",res);
}
这里上传使用的是阿里OSS,上传过程不再写,上传成功之后返回uri,拼接域名生成url返回给前端即可。当然需要注意的是,前端的请求”Content-Type”: “multipart/form-data”。