Последние темы


catalogfill и изображения

  • Здравствуйте, такой вопрос.есть xls документ в котором имеется уникальный код товара,название книги и тд,а так же ссылка на изображения на стороннем ресурсе. я просто подставляю путь к img src на эти сторонние ресурсы.
    alt text
    Но дело в том что картинки весят по 1-2 мб.
    Подскажите пожалуйста ход действий как мне их от туда вытащить,а потом загрузить к себе на сайт и можно ли это сделать через catalogfill?

  • В конфиге в функции filter_import() написать код, который будет скачивать картинку и загружать на свой сервер.

    Пример кода:

    $imageUrl = ... // URL файла картинки на удаленном сервере
    $imageFilePath = ... // полный путь файла картинки на этом сервере
    file_put_contents($imageFilePath, file_get_contents($imageUrl));
    

    http://php.net/file-get-contents
    http://php.net/file-put-contents

  • Эта запись удалена!
  • Эта запись удалена!
  • @andchir Работает,если указывать имя фото,то скачивает одну фотографию,а у меня скопировано много строк url в файл bb.txt

    $imageUrl = './bb.txt';
    $imageFilePath = './img/'.foto.'.jpg';
    file_put_contents($imageFilePath, file_get_contents($imageUrl));
    
  • @andchir

    вот ,помогли .файл
    http://badja94f.beget.tech/bb.txt

    $url = 'http://badja94f.beget.tech/bb.txt';
    $photos = explode(PHP_EOL, file_get_contents($url));
    
    foreach ($photos as $photo) {
        $fname = './img' . substr($photo, strripos($photo, '/'));
        file_put_contents($fname, file_get_contents($photo));
    }```
     закачка на сервер происходит,но вес картинок 0 байт,а при попытке открыть  пишет:
    '{"message": "('Unsafe header value %r', b'/tmp/fm/everest4.beget:9443/badja94f/5dd2f6cedb8cf4b44d2f139c6ccf313c/ITD000000000291758_cover1.jpg\\r')"}'
  • У вас же вроде ссылка на картинку есть в XLS файле. Оттуда и надо её брать.

  • @andchir да, только как мне в настройках указать колонку в которой будет эта ссылка,чтобы шло скачивание картинок скопом. пытался использовать пример который вы написали,но опять же ,что писать в строке

    $imageUrl = ... // URL файла картинки на удаленном сервере```
    
    я имею ввиду какой путь урл. если у меня ссылок тысячи, а скачивание работает, если указывать только одну ссылку.
  • Там по умолчанию в этой функции есть закомментированный пример как брать значение. На этом форуме много примеров можно найти. Вы просили "ход действий", а теперь получается, что вам нужно готовое решение.

    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr) {
        $imagesDirUrl = MODX_BASE_URL . 'assets/images/';
        $imagesDirPath = MODX_BASE_PATH . 'assets/images/';
    
        $output_arr = $value_arr;
        
        if(isset($output_arr['tv'][10])) {
            $imageFilePath = $imagesDirPath . basename($output_arr['tv'][10]);
            if (!isset($imageFilePath)) {
                file_put_contents($imageFilePath, file_get_contents(trim($output_arr['tv'][10])));
            }
            $output_arr['tv'][10] = $imagesDirUrl . basename(trim($output_arr['tv'][10]));
        }
        
        return $output_arr;
    }
    

    Не проверял. 10 - это ID TV параметра картинки, который вы указали в конфигурации.

 

Последние комментарии