Перейти к содержимому


Загрузить картинку в поле "изображение" по url

картинка изображение url

Сообщений в теме: 9

#1 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 24 Февраль 2015 - 14:25

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

#2 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 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 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 24 Февраль 2015 - 17:11

Правильно ли я понимаю, что мне надо будет заменить 491 на ид моего поля, например, 'f2821'?

#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 24 Февраль 2015 - 17:26

Просмотр сообщенияRiddick (24 Февраль 2015 - 17:11) писал:

Правильно ли я понимаю, что мне надо будет заменить 491 на ид моего поля, например, 'f2821'?
Только без 'f', а еще обратите внимание $line['Ссылка на картинку'] = $srcImgUrl; - прямая ссылка на изображение

#5 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 24 Февраль 2015 - 18:02

Не пойму, почему не наоборот? Мы же должны переменной присвоить значение из поля со ссылкой, а не наоборот.

#6 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 24 Февраль 2015 - 18:38

Просмотр сообщенияRiddick (24 Февраль 2015 - 18:02) писал:

Не пойму, почему не наоборот? Мы же должны переменной присвоить значение из поля со ссылкой, а не наоборот.
Лишнее, копипаст из рабочего кода! Не все удалил! $srcImgUrl это и есть юрл на картинку!

$line['Ссылка на картинку'] = $srcImgUrl;


#7 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 24 Февраль 2015 - 19:54

Отлично работает!

#8 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 25 Февраль 2015 - 00:02

Просмотр сообщенияRiddick (24 Февраль 2015 - 19:54) писал:

Отлично работает!
Рад был помочь!

#9 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 10 Апрель 2015 - 16:23

А вот, кстати, да. Мы прописываем ссылку на файл в таблице f_external_files и с этого момента мы его видим в списке внешних файлов, а где он физически храниться, как его программными средствами открывать и изменять? Можно примеры кода для загрузки внешнего файла извне в базу и работы с ним в базе. Туда-сюда и скоро мы уже CMS научимся создавать на базе clientbase :-)

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 722 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Апрель 2015 - 10:13

Просмотр сообщенияАлександр Пономарев (10 Апрель 2015 - 16:23) писал:

Мы прописываем ссылку на файл в таблице f_external_files и с этого момента мы его видим в списке внешних файлов, а где он физически храниться, как его программными средствами открывать и изменять?

Физически он хранится там, куда вы его сами поместили или где он изначально лежал. В таблице f_external_files вы всего лишь указываете путь к файлу (относительно корня программы), чтобы его можно открывать/изменять/удалять через менеджер внешних файлов. Если же вы добавляли файл непосредственно через менеджер, то опять же, он сохраняется либо в корне (если было указано имя без слешей), либо в указанной вами, как часть имени, папке программы. Если такой папки не было, она создается с нуля.

Цитата

как его программными средствами открывать и изменять?

Также как и везде - стандартными php-функциями. Насчет путей к файлам я уже написал.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных