Я бы сказал, настроить некоторое пространство FTP или общий ресурс WebDAV. Если вы не можете сделать это, я бы загружал изображения в одном (или небольшом количестве) zip-файлах, вместо того, чтобы пытаться справиться с сотнями уникальных загрузок, что может занять очень много времени, так как браузеры будут выбирать только один файл. за один раз в диалоге загрузки файла (т.е. вы не можете просто выбрать весь каталог для загрузки).
Почему бы не использовать PHP в этом случае:
Написание простого обработчика загрузки файлов в PHP легко, но если вы хотите обрабатывать очень большие загрузки, это немного сложнее, так как вам нужно быть осторожным с ограничениями по размеру загрузки файлов, ограничениями по времени выполнения скриптов и ограничениями памяти. Это может быть немного сложно для установки в первый раз.
Если это файл размером в несколько ГБ, который вы хотите обработать, тогда загрузка HTTP - это не тот путь, по которому вы хотите (исходя из того, что если вам нужно спросить, почему, заставить его работать так, как вы хотите, вероятно, будет очень сложно процесс для вас).
В Mac OS имеется несколько превосходных FTP-клиентов, и нет никаких оснований полагать, что веб-браузер является лучшим способом передачи файлов, чем FTP-клиент.
Относительно поддержки индикатора выполнения:
Текущая поддержка индикатора выполнения очень ограничена в PHP (в настоящее время только через сторонние модули, которые немного волосатые), хотя я полагаю, что планируется включить модуль в стандартный дистрибутив. Поиск в Google для uploadprogress.so должен дать некоторые соответствующие результаты.
В ответ на littlegreen:
Я использовал это расширение http://pecl.php.net/package/uploadprogress (которому удалось конфликтовать хотя бы с одним уже установленным расширением - хотя я думаю, что они исправили эту проблему сейчас) и написал собственный обработчик javascript (http://iaincollins.com/javascript/FileUploader.js) на основе нескольких примеров в Интернете, чтобы объединить лучшие из них, например, используя невидимый iframe для прозрачного возврата процесса загрузки, создав диалоговое окно загрузки файла DHTML и заменив элемент управления загрузкой файлов на основе уродливого браузера, сделав он прозрачный и накладывается на него поверх моего собственного элемента управления (поэтому он по-прежнему можно было нажимать, поскольку вы не можете вызвать диалог загрузки файла из JavaScript, хотя вы можете получить имя файла, который был выбран для загрузки). Право CSS-стиля было особенно важно для этого - оно довольно специфично для браузера.
JS, который я написал, к сожалению, очень специфичен для конкретной ситуации, но в нем могут быть некоторые полезные элементы - извините, у меня нет ничего общедоступного, на которое я могу ссылаться, так как он был создан для частного интерфейса.
Я вижу, что теперь есть плагин jQuery для uploadprogress - он не делает все, но это было бы хорошим началом: http://nixbox.com/demos/jquery-uploadprogress.php ... Я помню лучшие примеры, в том числе тот, который был обработан несколько загрузок файлов (ставя их в очередь и выполняя их последовательно - вам все равно приходилось выбирать один файл за раз), но, к сожалению, я не могу их найти.
Вывод:
Я бы постарался избежать хлопот и сделать что-то вроде FTP-пространства или частного / однорангового приложения для передачи файлов, если у вас нет времени.
Протокол передачи файлов (как следует из названия) специально разработан для передачи больших файлов и является лучшим вариантом, так как он требует небольшой настройки (вы не столкнетесь с ограничениями ресурсов), и вы можете разумно ожидать, что клиент будет иметь FTP возобновить поддержку, если ваш сервер работает (то есть, если загрузка останавливается, они могут легко возобновить ее с того места, где остановились, а не начинать заново с нуля, как это было бы необходимо сделать при загрузке HTTP на основе файлов PHP).
Хотя HTTP имеет возможность обрабатывать загрузку файлов, он не настолько надежен, и для загрузки файла размером в несколько ГБ необходимо явно настроить различные ограничения ресурсов (на веб-сервере и в PHP - как упомянуто выше). возможный. Даже с WebDAV (использующим HTTP для удаленной файловой системы) он прозрачен, но, как правило, он не такой надежный, как FTP, в основном из-за ошибочных реализаций клиента - в частности, могут возникать проблемы при передаче очень больших файлов как в Windows, так и в Mac OS, хотя Обычно это подходит для небольших (например, <500 МБ) передач файлов. </p>
В качестве примечания, спецификация HTML5 улучшит способ загрузки файлов - с возможностью выгрузки нескольких файлов одновременно и с процессом загрузки файлов как частью спецификации, но на данный момент это не совсем вариант.