ajaxfileupload上传改为POST提交,后台无法获取自定义参数问题

本文详述了在SpringBoot项目中使用AjaxFileUpload进行文件上传时,从GET到POST提交方式的转换过程及遇到的问题。介绍了如何通过修改ajaxfileupload.js源码,正确传递自定义参数至后台。
摘要由CSDN通过智能技术生成

我用的是springboot项目,现在需要做一个文件上传功能,选用ajaxfileupload异步提交,开始是将自定义参数拼接到url后面,用 url:“url?data=”+data 的方式传入后台,但是后来因为参数过长,会导致GET请求方式无法达到后台,所以就想换成POST提交,但是遇到了种种困难,下面来详细说一下:

先说一下ajaxfileupload的相关参数:
1、url           上传处理程序地址。  
2,fileElementId      需要上传的文件域的ID,即的ID。
3,secureuri        是否启用安全提交,默认为false。
4,dataType        服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5,success        提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6,error          提交失败自动执行的处理函数。
7,data           自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8, type           当要提交自定义参数时,这个参数要设置成pos

这样可以看到ajaxfileupload是可以支持POST提交,并且除了上传文件外还能将自定义参数带过去的。
于是这样就可以改为上面post的提交方式了,自定义参数值给data属性,type值为post
pos
在这里插入图片描述
这样就改为了post提交,注意后台接收的时候如果参数写在方法形参处,这时候会报错无法处理post请求,因为现在data传的值为null,形参没有dataJson的值,会找不到方法的。
至于为什么命名传了data但是后台却没收到值呢,这是因为我们虽然自定义写了参数,但是ajaxfileupload默认是没有将参数拼接传入后台的,ajaxfileupload的具体实现方式请另行百度,大致原理就是他自己封装了一个form表单提交,所以现在我们需要在他源码ajaxfileupload.js里面加三个东西(加粗斜体字体为新加的)。
1、var form = jQuery.createUploadForm(id, s.fileElementId,s.data);
2、createUploadForm: function(id, fileElementId,data)
3、
jQuery(oldElement).appendTo(form);
if (data) {
for (var i in data) {
// $(’’).appendTo(form);
$("").appendTo(form);
}

}
//set attributes
jQuery(form).css(‘position’, ‘absolute’);

这样就能成功将data传入后台了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值