1. 程式人生 > >Layui之上傳檔案

Layui之上傳檔案

《圖片/檔案上傳 - layui.upload》

最近在做的一個功能裡,需要在某些條件成立的情況下,才允許上傳檔案。

方法一:設定不自動上傳,將上傳事件繫結到另一個按鈕,選擇完檔案後可以根據條件讓上傳按鈕隱藏和顯示

方法二:設定自動上傳,這時就需要使用before方法或choose方法來判斷條件,但是因為upload.js中本來不提供阻止上傳的方式,所以得修改下upload.js的原始碼

找到以下程式碼:

return"choose"===t?l.choose&&l.choose(g):(l.before&&l.before(g),a.ie?a.ie>9?u():c():void u())

將其修改為:

return"choose"===t?l.choose&&l.choose(g):((l.before&&l.before(g))===false?'':a.ie?a.ie>9?u():c():void u())

這樣一來,在before方法裡return false就能阻止檔案上傳,而return true或沒有返回值則允許上傳。


動態傳參

upload.render({
    elem: '.importSectionBtn',
    url: '/ocOperatorNew/courseSection/doImport.do',
    method : "POST",
    accept: 'file',
    exts: 'xls|xlsx',
    data: {},	// courseId:$(".courseId").val();	
                // 由於courseId並沒有在載入頁面時賦值,而是在當前頁面操作後動態賦值,
                // 而這裡是載入頁面時就會渲染,所以會導致取到的courseId為空
    before: function(obj){
        var courseId = $(".courseId").val();
        if(courseId == ''){
            layer.msg("請儲存課程資訊");
            return false;
        }
        this.data.courseId = courseId;	// 方法:在函式裡手動賦值
    },
    done: function(res){
        layer.msg(res.msg);
        // 重新整理本頁面
        location.reload();
    }
});