Pull to refresh

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

Reading time2 min
Views33K
Всем доброго времени суток!
В этой, думаю, маленькой статье я хочу описать как я изучал, боролся и победил 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. в БД добавляется запись с именем фотографии и ИДом пользователя который её загрузил.

Надеюсь что кому то помог!
Tags:
Hubs:
-36
Comments22

Articles

Change theme settings