NeatUpload的MultiFile限制上傳數量

最近在研究ASP.NET的上傳控制項
原先的程式是使用NeatUpload來作大檔案的上傳
這NeatUpload是覺得不錯,只是細項要修改相當不好找
一些安裝和基本的使用,這邊當然就不說了
這篇要說明的是,在使用MultiFile控制項上傳
當利用Flash時,如何限制上傳檔案的數量
也就是UseFlashIfAvailable="True"

我是花了好幾天時間在研究
還好沒有很大的時間壓力
本來是在查如何限制上傳檔案的大小
是找到了方法,不過還沒實作
先在這篇說明如何限制檔案數量

在原作者的討論區看到有人詢問
而基本上我是利用MultiFile來取代InputFile
為什麼要這樣作,因為MultiFile可以設定UseFlashIfAvailable
就會直接使用SWFUpload當介面,此時可以利用SWFUpload來得到上傳檔案的大小
所以我並不是想用MultiFile,只是InputFile並沒辦法這樣作

就來看一下程式碼,我這邊只是限制只能選一個檔案
如果要限制2個以上的話,可能程式碼還需修正
<script type="text/javascript">
    window.onload = function() {
        NeatUploadMultiFile.prototype.Controls['MultiFile1'].OnFileQueued = function(file) {
            if (this.FilesToUpload.length > 1) {
             this.FilesToUpload[0].Delete();
             var fqc = NeatUploadMultiFile.prototype.GetFileQueueControl.call(this);
             while (fqc.hasChildNodes())
                fqc.removeChild(fqc.firstChild);
            NeatUploadMultiFile.prototype.OnFileQueued.call(this, file);
            }
            else
            {
                NeatUploadMultiFile.prototype.OnFileQueued.call(this, file);
            }
        }
    }
</script>
這是JavaScript是去改寫NeatUpload.js的OnFileQueued
這程式碼是要放在使用MultiFile的網頁裏
所以NeatUpload原先的程式都不需修改
原先討論的文章只是將新選擇的檔案刪除
可是這並不符合一般選擇單一檔案的習慣
所以作了一些改寫
也花了自己蠻多時間的
另外也有去研究了一下SWFUpload
SWFUpload本身也可以限制檔案數量
只是NeatUpload並沒有可以帶參數進去
所以要使用這樣的方法
就供大家參考看看了
標籤: ASP.NET
評論: 0 | 引用: 0 | 閱讀: 4176 | 回到頁首