9 Способов загрузить файлы на сервер Перед любым web разработчиком рано или поздно становится проблема загрузки файлов на сервер. Заказчикам нужно размещать прайслист или поделиться фотографиями с конференции или …
К сожалению, HTML разрабатывался как язык вывода страниц, работа с формами там простовата, то же самое и с загрузкой файлов.
Постараюсь рассмотреть все способы, которыми можно загрузить файлы на сервер. В основном это касается загрузки фотографий для добавления их в фотоальбом
1) По одному файлу
Самый простой способ - разместить поле для загрузки файла (<input type=’file’ />) и мучить пользователей загрузкой нескольких файлов по одному.
2) Несколько полей
Вместо одного поля размещаются несколько. Часто количество полей неограниченно и их можно добавлять и удалять через JavaScript. Гораздо удобнее, чем 1-й способ, но приходится выбирать загружаемый файл несколько раз. Занятие, я вам скажу, не из приятных. Когда приходится загружать файлы с именами IMG_XXXX.jpg, можно легко по ошибке выбрать один файл два раза или пропустить нужный.
3) Загрузка архива
Пользователь архивирует нужные файлы, а потом загружает архив через форму. Чуть-чуть экономим трафик пользователя, зато приходится делать лишние действия.
Кроме этого есть проблемы с распаковкой больших проблем, т.к. у PHP может просто
не хватить памяти для извлечения нескольких 5-7 мегапиксельных фотографий (стандартное ограничение на память – 8 МБ), у хостера может не быть нужного расширения и т.д.
4) Загрузка по FTP
FTP специально разработан для передачи файлов что понятно из его названия (File Transfer Protocol). Удобен, если файлы нужно загружать определенному кругу лиц.
Неудобств много:
1) Разделение пользователей. Создать FTP аккаунт не так просто, как добавить запись в базу. А на shared хостинге это почти невозможно
2) Настройка. Обычному пользователю не очень удобно устанавливать FTP клиент, разбираться с активным/пассивным режимом и т.д.
5) Отправка по почте
Такая возможность загрузки фотографий есть на Flickr и Picasa Web от Google. Человек отправляет на e-mail vasya.pupkin@photo.example.com письмо с приложениями, которые извлекаются и добавляются в фотоальбом.
Удобен только тогда, когда есть встроенный почтовый клиент. В Windows XP есть удобный мастер (Отправить -> Адресат), который позволяет маштабировать фотографии перед отправкой.
Но если вы пользуетесь web почтой, то получаете все неудобства 1-3 способов.
Кроме этого средствами PHP не очень просто принимать почту и извлекать из нее вложения.
6) Java апплет
Сейчас очень редкий способ. Можно загружать множество фотографий и показывать статус загрузки, только очень мало пользователей разрешают Java.
7) Мастер публикации файлов в Web
Удобный мастер Проводника (Windows Explorer), позволяет публиковать файлы на веб узлах сайтах. Показывает статус загрузки, миниатюры загруженных изображений, в общем рай для обычного пользователя.
Недостатки:
1) Привязан к Windows XP (не знаю, есть ли такая возможность в Vista)
2) Необходимо запускать ключ реестра, что не каждый здравомыслящий пользователь сделает
В целом удобный способ для загрузки фотографий администраторами сайтов, дойдут руки - встрою такую возможность в админку своего движка.
8) Сторонняя программа
Скачиваете программу, выбираете файлы и загружаете. Простор для фантазии огромен, можно сделать все что угодно. Только программу придется разрабатывать и поддерживать, объяснять пользователям как ее настроить для работы через прокси и т.д.
9) FancyUpload
Спасибо Жеке за интересную ссылку. Удобная штука, использующая Flash для выбора файлов и загрузки, HTML+Javascript для всего остального. Решение сложно в настройке, не передает cookies и http авторизацию. Для загрузки файлов из Firefox под Windows Flash часть использует движек IE. Зато есть очень красочное отображение прогресса загрузки файлов, в первый раз завораживает.
Средство более массовое, чем Мастер Публикации, но все равно лучше сделать обычную форму, на случай, если у пользователя запрещен Flash.
Пока еще не до конца протестировал FancyUpload, но скорее всего именно его буду использовать для загрузки фотоотчетов на свой сайт.
А какой способ загрузки используете вы?