layui多圖上傳加隱藏域


我的情況是,通過layui上傳圖片調用后端,后端將圖片上傳后返回圖片路徑,上傳成功后將圖片在頁面顯示出來(避免用戶網速不穩定,圖片其實還沒上傳成功就進行下一步操作),然后同步每個圖片增加隱藏域,最終表單提交時將上傳的圖片路徑都傳過去。

然后遇見了問題,現在需要允許同時選擇多個圖片上傳

 

我之前都是一張一張上傳的,所以上傳成功后渲染到頁面上的時候,利用的是 done 方法,然而:

 

 

 導致選擇兩張圖結果會渲染兩次,三張則是三次。。。

然后我花了點功夫改進了一下:

        upload.render({
            elem: '#upload',
            url: "url",
            number:0,  //上傳數量
            multiple:true,    //允許多文件上傳
            accept:'images',     //設置文件類型 圖片
            acceptMime: 'image/*',    //只顯示圖片文件
            before: function (obj) {    //上傳前回調
                new_obj = obj;
                addstr = [];
            },
            done: function (res) {    //請求成功回調
                addstr.push(res.data.src);
            },
            allDone: function(obj){    //當文件全部被提交后,才觸發
                new_obj.preview(function (index, file, result) {
                    trueindex = index.split('-');  
                    $('.img_list').eq(0).append(
                        '<div style="display: inline-block"> ' +
                        '<img src="' + result + '" alt="' + file.name + '" layer-src="'+addstr[trueindex[1]]+'>' +
                        '<input type="hidden" class="imagelist" name="image" value="'+addstr[trueindex[1]]+'"> ' +
                        '</div>'
                    )
                });
            }
        });                    

邏輯是在上傳前回調拿到所選的圖片對象,請求成功時再拿到該圖片的返回路徑,並將多圖路徑給一個數組,最終在所有文件上傳完成時,根據多圖對象遍歷的索引,和上傳成功返回的圖片路徑數組索引進行匹配,然后一次性渲染上去。

但是多圖對象的索引並不是單純的1,2,3,而是 時間戳-圖片選擇順序 ,索引我將索引處理了一下,實現了所有上傳圖片的路徑都能放入隱藏域里。

然后,我測試了一下,發現展示的圖片順序和對應隱藏域的圖片路徑並不是一個圖。。就是順序會錯誤,比如你上傳的時候展示的是 圖1 圖2 圖3 然后它們的隱藏域是 圖3 圖2 圖1 ,並不會導致數據錯誤,如果你不在乎它們的順序,那么還是可以用的。至於出現順序錯誤的原因,我有空了會再看看,希望能夠解決。

*注:

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM