Каково максимальное количество файлов для выбора в файле ввода HTML5 [multiple]?
у меня есть 64000 небольших изображений, которые я хочу загрузить на свой сайт (используя существующую проверку, поэтому нет FTP и т. д.). Я создал HTML5 [multiple] type=file input для этого некоторое время назад, чтобы использовать его для сотен или сотен изображений. Сотни это не проблема. Изображения пакуются и отправляются на сервер.
но когда я выбираю папку с ~ 16000 изображениями, список файлов ввода файла пуст... Событие onchange запускается, но список файлов пуст. Браузер (или файловая система или ОС?) кажется, есть проблема с выбором этого количества файлов.
Я создал очень маленький инструмент, чтобы помочь определить, что может быть max:http://jsfiddle.net/rudiedirkx/Ehhk5/1/show/
$inp.onchange = function(e) {
var l = 0, b = 0;
for (var i=0, F=this.files, L=F.length; i<L; i++) {
l += F[i].name.length;
b += F[i].size;
}
$nf.innerHTML += this.files.length + ' files: ' + (b/1000/1000) + ' MB / ' + l + ' chars of filename<br>';
};
все, что он делает, это считать:
- количество файлов
- количество символов все имена файлов объединяются
- количество МБ общего размера файла
когда я пытаюсь это, я получаю очень большинство:
1272 файлов: 176.053987 MB / 31469 символов имени файла
(на 32 & 64 бит Win7, Chrome 26-52)
следующее изображение (не) будет составлять:
- 1273 изображения, что не является очевидным отсечением
- между 176 и 177 MB размер файла, также не очевидное отключение
- менее 32000 символов имен файлов, также не очевидное отключение, хотя это похоже на 32к...
в моем calc 1 MB = 1000^2 байта, а не 1024^2. (Это был бы MiB, но, возможно, моя ОС/файловая система/браузер не согласны.)
мой вопрос: почему так много файлов? Почему этот Макс? Зависит ли это от ОС или браузера? Где я могу найти спецификации для этого? Это вина Джей Си? Поиск "file input max files" et al приводит только к атрибуту [max], который не имеет значения.
больше результаты теста:
- в Firefox Макс кажется, намного выше. По крайней мере," 2343 файла: 310.66553999999996 MB / 60748 символов имени файла " (это все файлы, которые у меня есть прямо здесь)
- в Firefox также: "16686 файлов: 55.144415 MB / 146224 символов имени файла" (гораздо меньше, но больше файлов)
обновление
- Chrome 52 canary Windows по-прежнему 32k имени файла
- в Firefox (44+) Windows по-прежнему неограниченное
1 ответов
почему так много файлов?
количество файлов зависит от количества символов все имена сочетаются.
почему это максимум?
в API Windows максимальное ограничение длины пути составляет 256 символов, API версии Unicode-32 767 символов.
Chrome просто устанавливает максимальную длину пути API версии Unicode, поэтому, как вы заметили, это около 32k символов.
Проверьте это исправление: https://code.google.com/p/chromium/issues/detail?id=44068
Firefox динамически выделяет буфер, достаточно большой для хранения нескольких выбранных файлов, которые могут обрабатывать гораздо большую длину пути.
Проверьте это исправление:https://bugzilla.mozilla.org/show_bug.cgi?id=660833
зависит ли это от ОС или от браузера?
оба.
где я могу найти спецификации для этого?
для использования и ссылки Windows API:
http://msdn.microsoft.com/en-us/library/aa365247.aspx (Максимальная Длина Пути Limitation)
http://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx
это вина JS?
нет.