В любом случае, чтобы определить размер файла перед загрузкой? - PullRequest
4 голосов
/ 08 июля 2010

Итак, у нас возникла эта проблема. Пользователь идет, чтобы загрузить файл, и если его размер превышает 10 МБ, он просто время от времени покидает страницу и очищается, и не возникает хорошая ошибка для описания того, что произошло. В идеале, мы хотели бы проверить размер файла, когда пользователь выбирает файл, который он хочет загрузить, но я не знаю, возможно ли это вообще. Наша структура построена на ASP.NET, VB.NET и Javascript (и ExtJS 3.0) и работает в IE.

В любом случае, чтобы сделать это?

Ответы [ 6 ]

4 голосов
/ 08 июля 2010

Я не думаю, что есть какой-либо способ сделать это, используя стандартные формы HTML.

Взгляните на SWFUpload . Это позволит вам контролировать размер файла.

3 голосов
/ 09 июля 2010

Приведенный ниже код работает в Firefox и Chrome, но проверка не включена в IE и Opera. Я думаю, что в IE вам может понадобиться ActiveXObject. Немного взято и изменено с здесь .

<script type="text/javascript">
var clicked = false;
function checkSize() {
var node = document.getElementById('file');
var check = node.files[0].fileSize;
if (check > 4096)
{
alert('Your file is too big!');
 return false;
}
}
</script>

<form enctype="multipart/form-data" action="upload_file.php" method="post" class="body">
Select a file: <input type='file' id='file' name='file'>
 <input type='submit' value=' Upload File ' onClick='return checkSize()'> 
</form>
2 голосов
/ 08 июля 2010

Вы можете установить ограничение в веб-конфигурации, свойство называется MaxRequestLength.

Установите его в web.config, в разделе httpRuntime:

<httpRuntime executionTimeout="90" maxRequestLength="4096" /> <-- number of bytes

Это должно быть вставлено в <system.web>

Что касается проверки размера файла, это так же просто, как

If txtFileUpload.PostedFile.ContentLength > 1024 Then <-- bytes
1 голос
/ 08 июля 2010

Вы можете использовать или уже пробовали использовать ActiveXObject?

Не проверено (вероятно, не будет работать в IE7 +)

function checkSize(fileInput, limit){
    if(!window.ActiveXObject){
        return false;
    }
    var oas = new ActiveXObject("Scripting.FileSystemObject"),
        d = fileInput.value,
        e = oas.getFile(d),
        f = e.size;
    return f <= limit; // in bytes
}
0 голосов
/ 08 июля 2010

С помощью обычного JavaScript и тега HTML-файла это невозможно, из-за соображений безопасности страница не может получить доступ к диску пользователя, что необходимо для проверки размера файла.со вспышкой, но я не флеш.

0 голосов
/ 08 июля 2010

Вы можете попробовать swfupload , если вам подходит Flash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...