Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сообщение с вложением(где хранить имя) (https://javascript.ru/forum/misc/76186-soobshhenie-s-vlozheniem-gde-khranit-imya.html)

kapellan 12.12.2018 10:43

Сообщение с вложением(где хранить имя)
 
Приветствую.
Помогите советом. Сильно не пинайте я только ючусь.:)
Набросал очень простой сайтик на meteorjs. Создал страницу на которой пользователь добавляет комментарий и подгружает изображения. Изображения подгружаются по кнопке upload после чего пользователь нажимает кнопку Send чем добавляет запись в базу данных. Сейчас загруженное изображение генерирует на странице текстовое поле с именем, которое после нажатия считывается и отправляется в базу данных. До такой идеи дошел сам и по этой причине кажется что есть более грамотные решения (кроме того для загруженного файла генерирую уникальное имя которое будет отличатся от того что грузил пользователь и пользователь может этого не понять). В идеале хотелось бы избавится от поля с именем.
Помогите советом как это грамотно реализуют
Заранее благодарен всем кто откликнется.

laimas 12.12.2018 10:59

Цитата:

Сообщение от kapellan
Сейчас загруженное изображение генерирует на странице текстовое поле с именем, которое после нажатия считывается и отправляется в базу данных.

Зачем?

Цитата:

Сообщение от kapellan
для загруженного файла генерирую уникальное имя

Это верно, так как пользователь А может загрузить файл 1.jpg и нет гарантии, что с таким именем файлы более никто не загрузит. При этом пользователю все равно что там за имя получит файл. Другое дело если пользователь захочет подписать свой файл - "Это я ...". Вот подписи к файлам и хранят в базе.

kapellan 12.12.2018 11:05

Цитата:

Сообщение от laimas (Сообщение 500320)
Зачем?

Для того чтоб когда пользователь нажимает кнопку отправить сообщение, вычитать новое имя и добавить в базу данных .

Вот то что сейчас получается заносится в базу по кнопке добавить https://clip2net.com/clip/m562571/28....png?nocache=1

Nexus 12.12.2018 11:07

kapellan, input[file] и так отправляет имя файла на сервер.

laimas 12.12.2018 11:13

Цитата:

Сообщение от kapellan
вычитать имя и добавить в базу данных.

А оно нужно на клиенте? Имя уникальное должно формироваться на сервере при получении изображения, а уж хранить его в базе или нет, тут нет однозначного утверждения. Например, если база это MySQL, то при удалении записи и хранения имени изображения в ней, прежде нужно получить имя изображения, удалить его и только после успешного удаления можно удалять саму запись. Неудобно да? Но можно и не хранить имя файла в базе и в качестве имени использовать ID записи, тогда обращаться за именем в базу при удалении записей не потребуется. В общем все зависит от логики - для чего изображение, как связано с записью и т.д. и т.п.

А для пользователя это имя вообще не нужно, если так интересно, то может его посмотреть в src изображения на странице.

laimas 12.12.2018 11:14

Nexus, нельзя использовать имена файлов для хранения.

Nexus 12.12.2018 11:19

laimas, я не про хранение, а про необходимость (точнее её отсутствие) передачи имени файла отдельным полем.

laimas 12.12.2018 11:22

Цитата:

Сообщение от Nexus
передачи имени файла отдельным полем

Так речь идет о формировании имени для хранения, что делать на клиенте совсем не требуется.

laimas 12.12.2018 11:25

Цитата:

Сообщение от kapellan
Вот то что сейчас получается заносится в базу

Не стоит, не знаю что за язык на сервере, но если РНР, тогда уж md5(uniqid()).

Nexus 12.12.2018 11:28

laimas,
Цитата:

Сообщение от kapellan
Для того чтоб когда пользователь нажимает кнопку отправить сообщение, вычитать новое имя и добавить в базу данных .

Я про это писал. Как я понял, автор перед отправкой файла на сервер получает имя файла, записывает его в поле и только после отправляет форму.


Часовой пояс GMT +3, время: 13:41.