700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > angularjs springboot上传文件ContentType:multipart/form-data

angularjs springboot上传文件ContentType:multipart/form-data

时间:2020-04-19 08:19:48

相关推荐

angularjs springboot上传文件ContentType:multipart/form-data

1、Http协议传输中可以传送多部分对象集合。对应的Content-Type为multipart/form-data

Content-Type: multipart/form-data; boundary=AaB03x--AaB03xContent-Disposition: form-data; name="field1"Joe Blow--AaB03xContent-Disposition: form-data; name="pics"; filename="file1.txt"Content-Type: text/plain...(file1.txt的数据)...--AaB03x--

上面为http请求时传递的实体数据,包含两个不同的对象,字符串field1与文件pics

field1=Joe Blow pics=file1.txt

2、http使用 boundary 字符串来划分多部分对象集合指明的各类实体。在boundary 字符串指定的各个实体的起始行之前插入“--”标记(例如:--AaB03x、--THIS_STRING_SEPARATES),而在多部分对象集合对应的字符串的最后插入“--”标记(例如:--AaB03x--、--THIS_STRING_SEPARATES--)作为结束。boundary一般由浏览器自动随机生成。

使用multipart/form-data传递数据时一般不设置Content-Type,浏览器会设置该首部并带上生成的boundary,类似于

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzxPPZRJEmGdLBx97

主动设置Content-Type为multipart/form-data时,会丢掉boundary值,导致后台无法解析数据。

3、附angularjs与spring boot请求示例

angularjs请求:

$http.post(url,params,{headers: {'title': 'boss','userId':user.id,'SESSIONID': user.sessionId,'Content-Type': undefined},transformRequest: angular.identity}).success(function(data){if (data.success) {callback(data);} else {toastr.error('交互失败!');callback(data);}}).error(function() {toastr.error('请求失败,请检查网络!');});

SpringBoot代码:

public AjaxResponseMessage addBalance(@RequestParam("file") MultipartFile file,@RequestParam("accountId") int accountId,@RequestParam("accountChange") Integer accountChange,@RequestParam(value = "remarks", required = false) String remarks) {AjaxResponseMessage ajaxResponseMessage = new AjaxResponseMessage();try {ccountService.addBalance(accountId, accountChange, remarks, file);catch (Exception e) {ajaxResponseMessage.setSuccess(false);}return ajaxResponseMessage;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。