Принудительная загрузка небольших файлов для IE9 / PHP / jQuery

Я хочу иметь небольшой лимит загрузки (например, 100 КБ для тестирования, возможно, 6 МБ в конечном итоге). Размер загрузки можно проверить:

  1. перед загрузкой

  2. потерпеть неудачу, когда слишком много загружено

  3. после загрузки

Если пользователь пытается получить файл размером 1 Гб, в идеале должно произойти (1), чтобы файл вообще не загружался. Если нет, (2) должно произойти, чтобы пользователь не знал, что файл слишком велик. Я хотел бы избежать другой возможности (3).

В HTML5, но не в IE9, размер файла можно проверить перед загрузкой, используя:

this.files[0].size

Получить размер файла перед загрузкой

В IE9 может работать следующее, если настройки безопасности настроены:

var objFSO = new ActiveXObject("Scripting.FileSystemObject"); var filePath = $("#" + fileid)[0].value;
var objFile = objFSO.getFile(filePath);
var fileSize = objFile.size; //size in kb

В идеале я хотел бы использовать метод, который работает с IE9. Я слышал об использовании флэш-файлов. Я хотел бы отдельный метод — не использовать большой плагин.

Вот мой код В данный момент он загружает весь файл, прежде чем проверяет, не слишком ли велик размер файла.

<?php
if (isset($_FILES['myfile'])) {
if ($_FILES['myfile']['error'] == UPLOAD_ERR_FORM_SIZE) {
// $_FILES['myfile']['size'] is 0
echo 'Error: file is too big!<br>';
}
else if ($_FILES['myfile']['size'] > 100000) {
echo 'File size is too big!<br>';
}
else {
echo 'File uploaded ok.<br>';
}
}
var_dump($_FILES);
?>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="file" name="myfile" />
<input type="submit" value="Submit" />
</form>

Небольшой лимит загрузки — только для одной формы, поэтому я не хочу изменять файл глобальных настроек PHP.

Я не уверен, что использование MAX_FILE_SIZE — хорошая идея — человек все еще должен загрузить весь файл, и данные о размере файла теряются (я мог бы сказать людям, насколько велика была их загрузка)

ini_get (‘post_max_size’) возвращает 8M, а ini_get (‘upload_max_filesize’) возвращает 32M. Если файлы размером более 8 МБ пытаются загрузить, файл все равно будет загружен полностью (даже более 40 МБ). После загрузки файлов размером более 8 Мб var_dump ($ _ FILES) возвращает пустой массив.

Если файл больше, чем около 600 Мб, я получаю ошибку 413 … то есть (1).

Поэтому я хочу сделать (1) или (2) в IE9, PHP и jQuery.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]