2011-05-12 56 views
1

我想在上傳到服務器之前獲取文件大小。我使用以下代碼asp.net文件大小

Dim fileDetails As IO.FileInfo 
fileDetails = My.Computer.FileSystem.GetFileInfo(filePath) 
Dim fileSize As Integer = fileDetails.Length 

在本地端,代碼可以根據需要工作,但在IIS上不起作用。

我的問題是,是否有任何其他方法來從文件瀏覽器窗口中找到所選文件的文件大小(我使用的是html控件類型文件,而不是在asp控件中的fileuploader)。

+0

你已經發布了同樣的問題與不同的Id。 http://stackoverflow.com/questions/5976274/access-file-in-client-side-on-serverside-in-vb-net – 2011-05-12 10:20:06

回答

0

您無法從ASP.NET頁面訪問客戶端文件系統,因此您需要在檢查文件大小之前上傳文件,並在文件太大時拒絕它。

0

您實施的代碼僅適用於服務器端對象。如果要在允許上傳之前檢查文件大小,則必須具有可以訪問客戶端本地文件系統的activeX控件。做到這一點的最好方法是允許上傳並轉儲不需要的文件(帶有指示問題的錯誤消息)。這裏是你將如何檢查已上傳文件的文件大小,但:

<input id="uploadFile" runat="server" type="file" /> 

而且在後面的代碼:

Dim fileSize as Int64 = uploadFile.PostedFile.ContentLength 

此時如果文件過大這一點,你可以做什麼與它,併發送一條消息給用戶,讓他們知道它沒有保存。

0

據我所知是沒有辦法來檢測文件大小服務器端上傳

之前如果您使用的是Flash上​​傳做到這一點的方式,如SWFuploaduploadify ,你可以限制文件大小並從swf上傳或uploadify擴展(我推薦使用uploadify)

0

不幸的是,你不能檢查客戶端的文件大小。它不應該是一個大問題,我有幾個當前的生產實現允許多個文件上傳,在服務器端檢查文件大小。這不是一個延遲,我不相信你會找到解決辦法。

需要注意的是,web.config中的設置決定了單個請求的最大長度(以千字節爲單位)。默認情況下,它被設置爲4MB。因此,如果您的用戶嘗試上傳的數量超過此數量,他將收到服務器錯誤。這裏是你如何改變這一點:

<system.web> 
    <httpRuntime maxRequestLength="4096"/> 
</system.web> 
+0

是的,他可以,檢查我的答案;) – Aviatrix 2011-05-12 10:27:19

+0

感謝您的答覆,但他的根據他以前的重複帖子,要求是不同的。 – Pankaj 2011-05-12 10:29:48

+0

http://www.uploadify.com/news/uploadify-is-not-good-enough/ – Pankaj 2011-05-12 10:47:22