Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Загрузка изображений с превью (https://javascript.ru/forum/events/65041-zagruzka-izobrazhenijj-s-prevyu.html)

drakulitka 21.09.2016 16:29

Загрузка изображений с превью
 
Помогите пожалуйста реализовать загрузку изображений (multiple) на сервер (в карточку товара продукта) с превью. В превью возможны манипуляции: удаление, сортировка.
Пример можно посмотреть тут: Simpla
Логин: admin
Пароль: admin

Карточка товара

Но там все запутанно и шаблонизатор Smarty.:-?
Не могу в коде разобраться, не силен в JS.
Исходный код оттуда есть

Предполагается для PHP
Тесты

warren buffet 21.09.2016 22:24

Цитата:

Сообщение от drakulitka
Но там все запутанно и шаблонизатор Smarty


Скорее всего в раздел Работа.

laimas 22.09.2016 07:59

Smarty работает на сервере, а предпросмотр на клиенте.
Из коллекции выбранных файлов полем со множественным выбором нельзя удалить какой либо выбранный файл. Можно пометить не загружать такой, и загрузку производить посредством Ajax.
Сортировка, это как сервером определено, либо указывается номер, либо сервер ее определяет сам порядком загруженных файлов.

drakulitka 22.09.2016 08:10

Значит в песочницу браузера не вмешаться?

laimas 22.09.2016 08:53

Цитата:

Сообщение от drakulitka
Значит в песочницу браузера не вмешаться?

А вы что хотите иметь - веб страницу административного раздела или нечто большее?

drakulitka 22.09.2016 12:41

Да, админку.
Хотелось бы понять как работать с <input type="file">
Я так понял, что с локального компа файлы попадают во временное хранилище браузера.
1. Как удалить какой-нибудь файл оттуда, как передать оставшиеся методом пост.
2. При повторном открытии сохраненной сущности, можно ли подгрузить уже с сервера, загруженные раннее файлы снова во временное хранилище?
Если нет - то как извернуться?
Мне не нужно готового решения, хочется все это усвоить, самая слабая область у меня.

laimas 22.09.2016 13:12

1. Нет такого метода, и было сказано об этом. Если бы речь шла о поле с единственным выбором, то его можно было бы и очистить, и удалить.
2. Браузер, это не набор массивов, в котором пользователю позволительно делать все что ему вздумается. А работа с локальными документами и каталогами еще и ограничивается вопросами безопасности со стороны браузера.
И что означает "При повторном открытии сохраненной сущности" - обращение к добавленному в базу товару, получение его уже загруженных изображений, которые загрузить на клиента, скрестив их с вновь выбранными для загрузки?

drakulitka 22.09.2016 16:36

Цитата:

Сообщение от laimas (Сообщение 429462)
"При повторном открытии сохраненной сущности" - обращение к добавленному в базу товару, получение его уже загруженных изображений, которые загрузить на клиента, скрестив их с вновь выбранными для загрузки?

Оно самое!

laimas 22.09.2016 17:08

Если бы такое и было возможным, объединение выбранных для загрузки и ранее выбранных (хотя это можно сделать,только не непосредственно с коллекцией выбранных), то делать этого совсем не нужно потому, что это накладно, кроме расточительства ничего не дает, да и просто глупо.

Если у товара есть изображения, значит при редактировании товара их нужно выводить в списке согласно установленного им порядка. При этом элементы списка будут содержать и скрытые поля определяющие сортировку. Кроме этого можно в список поместить и флажок для выбора удаления изображения.

Вновь добавляемые изображения помещать предварительным просмотром в этот же список, также имеющим скрытые поля для порядка сортировки и удаления из коллекции выбранных.

При каждой смене порядка (либо drag-and-drop или иным способом) сортировки, выбора удаления, у коллекции скрытых полей изменяется значение согласно их индексации в наборе.

Скрытые поля и флажки для удаления уже имеющихся изображений и такие же поля у добавляемых имеют разные имена полей, например upd и add. При этом поля имеющихся изображений связаны с ними по идентификатору (или иным способом, это зависит от того как хранятся данные на сервер и как они связаны с товаром), а у добавляемых изображений по их индексу в коллекции.

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

Выбор Удалить во вновь выбранном для загрузки означает не загружать его на сервер. Сама загрузка как и редактирование всех параметров товара производится посредством Ajax. Используя FormData можно загрузить из коллекции выбранных только те, что не выбраны для удаления.

drakulitka 22.09.2016 20:04

Теперь понимание пришло ))
Спасибо, подробно объяснили!!! :victory:


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