ajaxFileUpload帶參數提交(親測可用)

使用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);
ajaxfileupload js

如何使用它呢?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/

相關文章
相關標籤/搜索