关于Springboot使用MultipartFile实现上传图片
很多时候需要我们实现上传文件或者一些图片等功能,大多数都会遇到前端使用Ajax,enctype: multipart/form-data的方式上传,这种方式就是把文件以二进制的形式上传,这样可以实现多种类型的文件上传。
那么使用Springboot框架要怎么接收这二进制数据呢。大多数情况下可以使用MultipartFile来接收。以下就是我在尝试的使用的时候遇到的一些小问题,对于我这位新手来说,困扰了挺久。
这是我尝试demo的前端,这里以上传图片为例子
<form id="upload" name="uploadTest" action="" accept-charset="UTF-8" enctype="multipart/form-data">
<input id="realNameInput" name="realname" class="border-box" type="text" placeholder="请输入"/>
<input id="uploadimg-face" name="facephoto" type="file" accept="file" accept = "image/*" />
<input id="uploadimg-back" name="backphoto" type="file" accept="file" accept = "image/*" />
<button type="button" id="submitApply" name="saubmitapply">提交申请</button>
</form>
js代码
$("#submitApply").on("click",function(){
//提交表单
$("#upload").ajaxSubmit({
url: "XXXX/testMultiPart",//这里自己访问路径
type: "post",
enctype: 'multipart/form-data',
dataType:'json',
success: function (data){
alert(data);
},
error: function (data){
}
});
})
这里注意一下 我使用的ajaxSubmit 若要使用需要导入jquery.form.js
<script src="js/jquery.form.js"></script>
controller
//test MultiPart
@RequestMapping(value="/testMultiPart",method = RequestMethod.POST)
@ResponseBody
public void getMultiPartTest(@RequestParam("facephoto") MultipartFile facephoto,
@RequestParam("backphoto") MultipartFile backphoto,
@RequestParam("realname") String realname) {
System.out.println("face : "+facephoto);
System.out.println("back : "+backphoto);
System.out.println(realname);
//获取文件名字
String faceName = facephoto.getOriginalFilename();
String backName = backphoto.getOriginalFilename();
System.out.println("face file name : "+faceName);
System.out.println("back file name : "+backName);
//以下实现自己功能所需的逻辑。。。
}
这里值得注意的事:
1.每个input type = file 标签都要给它一个name,这样在controller里接收param的时候就可以利用这个name找到对应的值了。
2.若有文本(text),和文件file一同上传的时候,text文本可以照常接收,而file则需要MultipartFile来接收。
3.当遇到多个上传文件怎么办,这里分为2种情况
第一种:上传的时候分为2个分开的上传文件,就如以上的例子。在controller接收参数的时候可以多定义几个MultipartFile来接收,但是要符合上面的第一条。
第二种:就是一个file里有多个文件,这样的情况可以用数组来接收,如
MultipartFile [] file。
需要深入了解可以翻阅其他大佬的解答,这里是身为小白的我遇到一些小问题的解决办法和记录,这里若有更好可以分享一下。