Загрузчик фотографий ВКонтакте для своего сайта
Все, кто проводят свое свободное время в социальной сети ВКонтакте знают как удобно там загружать свои фотографии – выбираешь сразу кучу фоток, они отображаются в браузере в виде списка, где их можно либо повернуть в любую сторону, либо совсем удалить, а потом нажатием одной кнопки все они загружаются на сервер вконтакта. Красота! Помимо всего прочего, этот загрузчик еще экономит время загрузки путем оптимизации фотографий на стороне клиента, сжимая через чур большие изображения.
Я захотел для своего сайта подобный загрузчик, начал искать готовые решения – не нашел. Тогда и решил взять и портировать этот самый вконтактовский загрузчик для своего сайта, к счастью, никаких защитных механизмов не оказалось. Сам загрузчик состоит только из одного SWF файла 195 кб весом, очень компактный надо сказать.
И так, что надо, чтобы поставить такой загрузчик себе?
- Сам “свиф” файл загрузчика.
- Библиотечку swfobject2.js для встраивания загрузчика в HTML-страницу (не обязательно).
- Набор переменных (flashvars) для задания параметров загрузчика.
- Скрипт для приема и загрузки файлов на стороне сервера, в нашем примере я приведу код такого скрипта на PHP.
Все вышеперечисленное я выкладываю в архиве, можете скачивать и сразу пользоваться.
В архиве есть файл index.html куда встраивается сам загрузчик, в нем же прописываются параметры для него, в частности можно изменить любой текст на свой (для локализации) и изменить такие параметры, как jpeg качество выходной фотографии, а также очень важные для нас параметры URL серверного скрипта для отправки файлов (upload_url) и URL страницы на которую будет происходить редирект после загрузки всех файлов (redirect_url).
Есть еще одна деталька, как вы помните, ВКонтакте загрузчик позволял загружать “только” до 50 фоток за раз (это на самом деле не мало), но мы можем изменить это число на любой другое с помощью параметра max_images. В своем примере я увеличил лимит до 100.
PHP код для приема файлов на сервере до безобразия прост, в минимальном варианте он будет выглядеть так:
1 2 3 4 5 6 7 8 9 |
<?php $pn = $_POST['partNum']; // обозначает номер порции начиная с нуля foreach($_FILES as $file){ if(is_uploaded_file($file['tmp_name'])) move_uploaded_file($file['tmp_name'], 'uploaded_files/'.$file['name']); } ?> |
Тут мы просто перечисляем все файлы, которые получили и сохраняем их в папку uploaded_files. Помните, что файлики передаются частями, скрипт вызывается каждые 4 файла, а о номере партии загрузки красноречиво говорит partNum, правда, на деле я этой переменной применения не нашел.
Вот так все и работает, если вам достаточно того, что предоставляет этот загрузчик, можете его использовать на своем сайте. А вот мне, как оказалось, он не подошел. Дело в том, что он все поступающие картинки конвертирует в JPG, а в моих планах обязательно надо загружать анимированые GIF-ы. Я надеялся, что смогу декомпилировать SWF файл и внести в него нужные мне изменения в Adobe Flash CS4, но ничего не получилось, вылавливаю кучу ошибок при обратной компиляции. Так что сейчас уселся за изучение Adobe Flex и ActionScript3, чтобы написать свой собственный вариант приложения пакетной загрузки файлов.
Забыл еще кое что… Этот загрузчик написал Андрей Рогозов за это ему спасибо! :)
ноября 6, 2010 Суббота at 3:48 пп
-
falstaf
-
falstaf
-
http://profiles.google.com/xclu7ive Антон Сидоров
-
http://redspirit.ru Red Spirit
-
Worker Hot
-
http://redspirit.ru Red Spirit
-
slam
-
http://redspirit.ru Red Spirit
-
http://twitter.com/himic3 Anton
-
http://redspirit.ru Red Spirit
-
Elektra
-
http://redspirit.ru Red Spirit
-
GinABore
-
http://redspirit.ru Red Spirit
-
http://www.facebook.com/people/Sergo-Sev/100001217464793 Sergo Sev
-
http://redspirit.ru Red Spirit
-
http://www.facebook.com/people/Sergo-Sev/100001217464793 Sergo Sev
-
http://redspirit.ru Red Spirit
-
http://www.facebook.com/people/Sergo-Sev/100001217464793 Sergo Sev
-
Uasya
-
Dmitry
-
http://redspirit.ru Red Spirit
-
Dmitry
