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 параметра картинки, который вы указали в конфигурации.

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.