2010-11-25 79 views
1

關於.net中的AsyncFileUpload控件,當我選擇一個文件時,控件將執行文件上傳。在我擔心的是,是否有可能禁用上傳一次我選擇一個文件,以便我可以用提交按鈕異步處理上傳。AsyncFileUpload控件

回答

0

據我所知,AsyncFileUpload公開的唯一事件是UploadComplete事件和UploadError。沒有專門公開功能來手動啓動上傳的事件。也許JavaScript中的一些技巧可以實現,但我之前沒有看到過這樣的解決方法。

0

簡單的答案是否定的。我有類似的asyncupload問題就像那些。我的建議是,如果您需要使用按鈕控制上傳,添加和刪除選定的文件(稍後您可能需要這些文件)並使用一些JavaScript操作,請遠離他。

搜索SWFUpload是一個可以輕鬆與.NET集成的Flash組件。它提供了多個JavaScript選項和事件。 :d

檢查以下幾個環節:

Official site

Demonstration

+0

我剛剛經歷了SWFUpload,我發現上傳的文件將存儲在upload.aspx所在的位置。所以我的問題是,如何將文件存儲到數據庫中? – 2010-11-26 02:24:08

1

我知道這是老了,但我打我的頭這一段時間,所以對於誰可能會感興趣。

我的第一個想法是禁用控件下的文件輸入。

我能夠禁用該控件,但不幸的是,它停止工作。當服務器觸發AsyncFileUpload_UploadComplete時,輸入被打亂,所以沒有要讀取的文件。

<script> 
function disableFileUpload(on) { 
    if (on) { 
     $('#ajax-file-input input:file').attr('disabled', true); 
    } else { 
     $(#ajax-file-input 'input:file').attr('disabled', false); 
    } 
} 
function AsyncFileUpload_CheckExtension(sender, args) { 
    disableFileUpload(true); 
    return true; 
} 
function AsyncFileUpload_OnClientUploadComplete(sender, args) { 
    disableFileUpload(false); 
    var data = eval('(' + args.d + ')'); 
    for (var key in data) { 
     var obj = data[key]; 
     for (var prop in obj) { 
      console.log(prop + " = " + obj[prop]); 
     } 
    } 
    doThingsWith(data); 
} 
</script> 
<div id="ajax-file-input"> 
<ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1" 
        OnUploadedComplete="AsyncFileUpload_UploadComplete" 
        OnClientUploadStarted="AsyncFileUpload_CheckExtension" 
        OnClientUploadComplete="AsyncFileUpload_OnClientUploadComplete" 
        runat="server" /> 
</div> 

我最終在控件的頂部放置了一個半透明png,並顯示並隱藏它,使控件不可見。

希望這會有所幫助。

function disableFileUpload(on) { 
    if (on) { 
     $("#file-disabled").show(); 
    } else { 
     $("#file-disabled").hide(); 
    } 
} 
相關問題