关于Springboot使用MultipartFile实现上传图片

关于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

需要深入了解可以翻阅其他大佬的解答,这里是身为小白的我遇到一些小问题的解决办法和记录,这里若有更好可以分享一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值