Массовая загрузка картинок в систему ресурсов

Как работает массовая загрузка картинок

В системе есть внешнее действие типа processimagezip, которое позволяет загружать архив с файлами. 

Имена файлов в архиве содержат данные об объекте, к которому мы привязываем картинку. 

К примеру есть товары с id = 1000, 1001. 

В архиве могут быть картинки с именами 1000_1, 1000_2...   и 1001_1, 1001_2 и т.д. Система обработает архив и загрузит в систему ресурсов (по коду типа ресурса) указанные картинки: 

  • обработает их исходя из настроек типа ресурса
  • сохранит объекты в нужном порядке
  • привяжет файлы к нужным itemID (порядок и itemID определяется на основе имени файла). 

Общий процесс выглядит так: 

  • создаем тип ресурса (например с кодом t1)
  • кладем архив с картинками/файлами в папку uploads. 
  • вызываем внешнее действие. Пример вызова внешнего действия: 
-- SELECT 2 
select 'processimagezip' type, @path path, 't1' resourceTypeCode, '' sp, 1 replace
  • механизм распаковывает файлы во временную папку, обрабатывает файлы и сохраняет их через систему ресурсов
  • временная папка удаляется автоматически. ВАЖНО! zip архив не удаляется автоматически.

Параметры внешнего действия processimagezip

  • path - путь к архиву (если файл большой, его можно к примеру через FTP).
  • replace - если 1, то для элементов itemID(для которых есть файлы) будут сначала удаляться прежние файлы.
  • resourceTypeCode - тип ресурса (он задает правила обработки файлов и проверку доступов). 
  • sp - имя хранимой процедуры для разбора имени файла и получения itemID, ord (по умолчанию имена должны иметь имя {itemID}_{ord}). 
  • user - имя пользователя, под которым будет выполняться операция (если поставить NULL, то будет выполнение под текущим пользователем). 

Процедура разбора имени файла для получения itemID и ord (параметр sp)

Процедура разбора имени файла для получения itemID и ord.

Процедура указывается как параметр sp у внешнего действия.Если процедура не указана, то считается что имя файла идет в формате {itemID}_{ord}.

На входе процедуры:

  • name nvarchar(256) - имя файла (откуда мы будем доставать itemID и ord)
  • resourceTypeCode nvarchar(128) - тип ресурса

На выходе SELECT 1:

  • ItemID - к какому объекту идет привязка (itemID в as_rs_resources), 
  • Ord - порядковый номер. 

В итоге, если указано имя процедуры в параметре sp, то будет для каждого имени файла вызываться эта процедура и через нее будут определяться параметры itemID (привязка файла к некой сущности с id=itemID, например, товару) и ord (сортировка).

Примечание: если itemID будет пустой строкой, то такой файл не будет обработан (т.е. будет проигнорирован). 

Дополнительные материалы

  1. Файлы загружаются на сервер, но при скачивании выходит ошибка 404.3
  2. Не выводятся картинки на сайте 
  3. Загрузка файлов с drop областью и гибкой разметкой
  4. Как поставить водяной знак на картинку при загрузке
  5. Как приводить картинки к заданным размерам при загрузке на сайт
  6. Как оптимизировать качество картинок при загрузке на сайт

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK