2009-02-13 166 views
6

我在我的web應用程序中有一個文件輸入標籤。我想在將文件發送到服務器之前檢查該文件是否太大。當然,我仍然有驗證服務器端。有什麼辦法可以用JavaScript來做到這一點?它必須在IE7 +和FF3 +中工作。謝謝。如何在上傳文件之前檢索文件的大小?

編輯:somefileinputobject.files [0] .filesize工作在FF,但不是IE。

+0

不幸的是,這是一些還沒有使用插件(例如flash)的跨平臺。 http://www.w3.org/TR/FileAPI/是Firefox支持的工作規範。 – Matthew 2010-03-19 04:05:49

+0

Duplicate:http://stackoverflow.com/questions/158149/how-do-you-restrict-the-size-of-a-file-being-uploaded-with-javascript-or-java-w – 2010-03-20 10:36:08

+0

請參閱[this更新的問題和答案](http://stackoverflow.com/questions/3717793/javascript-file-upload-size-validation)在現代瀏覽器中,這是可能的,沒有請求到服務器,雖然驗證必須完成無論如何,服務器也是如此。 – Pointy 2015-10-21 17:36:27

回答

2

這是一個困難的問題限制了發佈數據的總大小。您必須使用AJAX來完成此操作,並使用POST請求中瀏覽器發送給服務器的文件標頭。

雅虎的UI庫有一個工具來幫助解決這個問題。 YUI Uploader

0

Javascript不能這樣做。它會有嚴重的安全問題。也許閃光雖然可以。

0

簡答:不,你應該在服務器上處理這個問題。

長答案:不可靠。與IE瀏覽器,你可以這樣做:

function checkSize(filespec) { 
var fso, f, s; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
f = fso.GetFile(filespec); 
s = f.size; 
// Do something with var s 
} 

但是,這可以很容易地通過瀏覽器的安全設置或其他瀏覽器或平臺的 使用情況comprimised。

0

不能使用JavaScript來實現可靠的所有瀏覽器,但你可以從web.config

0

如果您使用的是傳統的文件輸入控件,那麼您確實沒有太多的選項。你不能在客戶端檢查它,它會打你配置的maxRequestLength之前,你有機會檢查它的服務器端。但是,您可以捕獲maxRequestLength超出時發生的異常。

相關問題