4
Загрузить картинку в поле "изображение" по url
Автор Riddick, 24 февр. 2015 14:25
картинка изображение url
Сообщений в теме: 9
#1
Отправлено 24 Февраль 2015 - 14:25
Доброго дня. Поиск не дал ясности по вопросу, так что создам новую тему. Есть поле с типом "изображение", и я хочу автоматически в него загружать картинку по URL. Как это сделать? Подозреваю, что для начала надо скачать сам файл, а потом прописать на него ссылку, но до конца не представляю как реализовать. Прошу помощи.
#2
Отправлено 24 Февраль 2015 - 14:41
Riddick (24 Февраль 2015 - 14:25) писал:
Доброго дня. Поиск не дал ясности по вопросу, так что создам новую тему. Есть поле с типом "изображение", и я хочу автоматически в него загружать картинку по URL. Как это сделать? Подозреваю, что для начала надо скачать сам файл, а потом прописать на него ссылку, но до конца не представляю как реализовать. Прошу помощи.
$line['Ссылка на картинку'] = $srcImgUrl; //Получаем расширение файла из юрл $typeFile = substr($srcImgUrl, strrpos($srcImgUrl, ".") + 1); //Получаем имя файла из юрл $oldName = sha1(rand(0, 333).substr($srcImgUrl, strrpos($srcImgUrl, "/") + 1)); $nameFile = $oldName.".".$typeFile; //генерируем имя временного файла $file_hash = get_file_hash($field_id, $line_id, $nameFile); $path_tmp_name = "temp/" . $file_hash; //Создаем дескриптор по указанному файлу. $fp = fopen($path_tmp_name, 'w+'); //Качаем файл по ссылке. $ch = curl_init($srcImgUrl); curl_setopt($ch, CURLOPT_FILE, $fp); $data = curl_exec($ch); curl_close($ch); fclose($fp); //Определяем путь к загружаему файлу в КБ $file_path = get_file_path(491, $line['ID'], $nameFile); //Создаем необходимую структуру директорий create_data_file_dirs(491, $line['ID'], $nameFile); //Копируем скаченный файл copy($path_tmp_name, $file_path); //удаляем временный файл unlink($path_tmp_name); if (!$line['Фото товара']) $line['Фото товара']=$nameFile; else $line['Фото товара']=$line['Фото товара']."\r\n".$nameFile; // Формируем предпросмотр изображения в папке cache $cur_line = $line; $cur_table = $table; $cur_field = get_table_fields($table); $cur_field = $cur_field[491]; $t = form_display_type($cur_field, $cur_line);
Уже давно работает такой код. Где $line['Фото товара'] это поле с айди 491
#3
Отправлено 24 Февраль 2015 - 17:11
Правильно ли я понимаю, что мне надо будет заменить 491 на ид моего поля, например, 'f2821'?
#5
Отправлено 24 Февраль 2015 - 18:02
Не пойму, почему не наоборот? Мы же должны переменной присвоить значение из поля со ссылкой, а не наоборот.
#6
Отправлено 24 Февраль 2015 - 18:38
Riddick (24 Февраль 2015 - 18:02) писал:
Не пойму, почему не наоборот? Мы же должны переменной присвоить значение из поля со ссылкой, а не наоборот.
$line['Ссылка на картинку'] = $srcImgUrl;
#7
Отправлено 24 Февраль 2015 - 19:54
Отлично работает!
#9
Отправлено 10 Апрель 2015 - 16:23
А вот, кстати, да. Мы прописываем ссылку на файл в таблице f_external_files и с этого момента мы его видим в списке внешних файлов, а где он физически храниться, как его программными средствами открывать и изменять? Можно примеры кода для загрузки внешнего файла извне в базу и работы с ним в базе. Туда-сюда и скоро мы уже CMS научимся создавать на базе clientbase :-)
#10
Отправлено 16 Апрель 2015 - 10:13
Александр Пономарев (10 Апрель 2015 - 16:23) писал:
Мы прописываем ссылку на файл в таблице f_external_files и с этого момента мы его видим в списке внешних файлов, а где он физически храниться, как его программными средствами открывать и изменять?
Физически он хранится там, куда вы его сами поместили или где он изначально лежал. В таблице f_external_files вы всего лишь указываете путь к файлу (относительно корня программы), чтобы его можно открывать/изменять/удалять через менеджер внешних файлов. Если же вы добавляли файл непосредственно через менеджер, то опять же, он сохраняется либо в корне (если было указано имя без слешей), либо в указанной вами, как часть имени, папке программы. Если такой папки не было, она создается с нуля.
Цитата
как его программными средствами открывать и изменять?
Также как и везде - стандартными php-функциями. Насчет путей к файлам я уже написал.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных