使用ajaxFileUpload上傳文件時,有時須要帶參數提交,網上有不少資料說使用data,但其實要使用data帶參數是須要修改的,不然後臺是獲取不到的.html
分析緣由:java
ajaxFileUpload爲了實現無刷新異步提交文件,構建 iframe 而後建立form表單 再將要上傳的文件寫上去再提交.可是原代碼 卻沒有處理data.因此這塊內容須要咱們本身加上去.web
下面紅色部分爲修改ajaxFileUpload.js的三處地方:ajax
備註:好像csdn代碼中加顏色加粗 有問題這三處修改的地方我直接貼出來,位置看下面的代碼,spring
①createUploadForm: function(id, fileElementId,data); ②jQuery(form).appendTo('body')的前面修改:
if (data) { for (var i in data) { $('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form); } }
③var form = jQuery.createUploadForm(id, s.fileElementId,s.data);
ajaxFileUpload爲了實現無刷新異步提交文件,構建 iframe 而後建立form表單 再將要上傳的文件寫上去再提交.可是原代碼 卻沒有處理data.因此這塊內容須要咱們本身加上去. 下面紅色部分爲修改ajaxFileUpload.js的三處地方: 備註:好像csdn代碼中加顏色加粗 有問題這三處修改的地方我直接貼出來,位置看下面的代碼, createUploadForm: function(id, fileElementId,data); if (data) { for (var i in data) { $('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form); } } var form = jQuery.createUploadForm(id, s.fileElementId,s.data);
如何使用它呢?json
$.ajaxFileUpload({ url: 'http://localhost:8080/HNUST/crawler/ordinary2', type: 'post', data : { url : url, keyword : keyword, rule : rule, data : data, sign:sign }, secureuri: false, //通常設置爲false fileElementId: 'file', // 上傳文件的id、name屬性名 dataType: 'JSON', //返回值類型,通常設置爲json、application/json 這裏要用大寫 否則會取不到返回的數據 success: function(data, status){ alert(data); }, error: function(data, status, e){ alert(e); } });
html:mvc
<input type="file" id="file" name="file">
java後臺接收參數 獲取參數不能按照request.getParameter的方式,上傳文件後臺有兩種方式(據我所知,歡迎拍磚),一種是是經過Servlet的方式,利用ServletFileUpload獲取,FileItem集合,經過便利獲取FileItem獲得參數,不推薦app
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
List<FileItem> fileItems = servletFileUpload.parseRequest(request);
第二種方式,是經過spring mvc上傳文件的方式,經過MultipartFile file,直接接收文件,須要配置異步
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默認編碼 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 內存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean>
詳細能夠參考spring mvc 文件上傳參數,經過該種方式能夠經過request.getParameter獲取參數ide
使用過程當中有兩點須要注意的地方:
其一,dataType必需要大寫;
其二:在data的值要寫成json的格式,不然後臺沒法接受參數
最後感謝@8英里的提示,讓我修正以前的錯誤,避免給其餘人代碼不變。
參考網站:
http://blog.csdn.net/u013243986/article/details/51497057
http://blog.csdn.net/cheung1021/article/details/7084673/