jQuery File Upload. Загрузка и добавление картинок в БД

от автора

Всем доброго времени суток!
В этой, думаю, маленькой статье я хочу описать как я изучал, боролся и победил 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *