В этой, думаю, маленькой статье я хочу описать как я изучал, боролся и победил jQuery File Upload.
Лирическое отступление:
В создании сайта мне потребовалась функция загрузки изображений на сайт, причем отдельный пользователь должен был загружать фотки так что бы фотка сохранялась и была прикреплена именно за этим пользователем.
В общем погуглив я наткнулся на jQuery File Upload.
На сайте имеется документация, в которой я видимо так и не разобрался, но всё же решился разобраться в самих скриптах.
1. И так. Скачал скрипт, установил на сервер.
И сразу же столкнулся со следующей проблемой:
После загрузки изображений, обновляю страницу и тот список картинок который уже загрузил, отображается снова. Для кого-то возможно это и нужно но не мне.
Начал искать как же исправить эту проблемку.
Она решатся в фаиле server/php/upload.class.php. Строка примерно 640+-5.
Нужно исправить
public function get($print_response = true)
на
public function get($print_response = false)
.
Одной проблемой меньше.
Дальше я задался вопросом как же добавить картинку в Базу данных MySQL.
Решение было опять же в этом фаиле.(upload.class.php)
примерно в 500-ой строке после строки:
move_uploaded_file($uploaded_file, $file_path);
Дописал свой скрипт добавления фотки в БД
mysql_query("INSERT INTO img SET name='".$file->name."'");
Дальше я обнаружил, что при загрузки картинки запись в БД добавилась но если её сразу же удалить то картинка удаляется а запись в БД нет. Опять начал изучать код. в этом же фаиле нужно добавить примерно в 715 строке после:
unlink($file);
команду удаления записи в БД. В моём случае это:
mysql_query("DELETE FROM img WHERE name='".$file_name."'");
Ну уже хорошо.
Тут меня как молнией жахнуло. А зачем я добавляю картинки в БД просто по именам не прикрепленные к определённому автору?!
Начал искать и думать как же мне занести информацию большую чем
mysql_query("INSERT INTO img SET name='".$file->name."'");
Решение опять же нашлось.
Открываем главный фаил Index.html (который мы открываем для запуска скрипта)
и добавляем в
<form id="fileupload" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
Условно ID пользователя который загружает картинки.
примерно выглядит вот так:
<form id="fileupload" userId="1234567890" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
Как его сюда паять думаю придумаете по-своему.
Далее открываем фаил main.js
22-ая строка
url: 'server/php/index.php?'
Меняем её следующим образом
url: 'server/php/index.php?id='+$('#fileupload').attr('userId')
Теперь при загрузки фаила у нас будет отправляться GET запрос с ID’ом пользователя.
Теперь ещё раз меняем примерно 500-ую строчку
с
mysql_query("INSERT INTO img SET name='".$file->name."'");
на
mysql_query("INSERT INTO img SET name='".$file->name.$_GET['id']."'");
И вуаля. При загрузке картинок пользователем что у нас получается:
1. Фотография загружается на сервер.
2. в БД добавляется запись с именем фотографии и ИДом пользователя который её загрузил.
Надеюсь что кому то помог ибо я над этим шаманил 2 дня.
ссылка на оригинал статьи http://habrahabr.ru/post/158167/
Добавить комментарий