Сохранение изображения с заданного URL-адреса PHP


Сохранение изображения с URL-адреса PHP — php

Мне нужно сохранить изображение с URL-адреса PHP на мой компьютер. Скажем, у меня есть страница, https://example.com/image.php , держа единственное изображение «цветок», ничего больше. Как сохранить это изображение из URL с новым именем (используя PHP)?

    4 11
  • 11 окт 2020 2020-10-11 11:07:31
  • riad

11 ответов

установите wkhtmltoimage на свой сервер, а затем используйте мой пакет packagist.org/packages/tohidhabiby/htmltoimage для создания изображения из URL вашей цели.

  • 11 окт 2020 2020-10-11 11:07:34
  • TohidHabiby
  • 11 окт 2020 2020-10-11 11:07:34
  • sen

Создайте папку с именем images, расположенную в пути, который вы планируете разместить php script, который вы собираетесь создать. Удостоверьтесь, что у него есть права на запись для всех или скрипты не будут работать (он не сможет загрузить файлы в каталог).

  • 11 окт 2020 2020-10-11 11:07:33
  • Ibrahim
  • 11 окт 2020 2020-10-11 11:07:33
  • zloctb

  • 11 окт 2020 2020-10-11 11:07:33
  • karl

Мне не удалось получить какие-либо другие решения для работы, но я смог использовать wget:

  • 11 окт 2020 2020-10-11 11:07:33
  • Andrew

Ответ Vartec с cURL у меня не сработал. Это произошло с небольшим улучшением из-за моей конкретной проблемы.

например,

Когда на сервере происходит перенаправление (например, когда вы пытаетесь сохранить изображение профиля в Facebook), вам понадобится следующий набор параметров:

Полное решение становится:

Загрузка изображений с других сайтов на PHP

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

Давайте сразу приведу этот тривиальный PHP-код:

Вот такой тривиальный скрипт, который едва ли нуждается в каких-либо комментариях. И аналогично можно загружать любые файлы с других сайтов и сохранять их к себе.

Теперь о том, где это может пригодиться. Я представил себе такую ситуацию, допустим, был форум, на котором изображения не хранились. А все изображения надо было загружать на сторонний сервис и прописывать к ним только путь. Потом владельцу форума захотелось сохранять все изображения у себя (допустим, место на хостинге стало позволять), но чтобы не пропали все предыдущие изображения, их нужно сохранить к себе. Разумеется, когда есть тысячи этих изображений, то сохранять их вручную — плохой вариант.

Вот тут и придёт на помощь этот скрипт по загрузке изображений с других сайтов на PHP. Собираем пути из BB-кода сообщений, загружаем все изображения к себе на сайт, меняем BB-код сообщений. Возможно, есть и ещё какие-нибудь варианты использования данного скрипта.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.


Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Сохранение изображения из PHP URL

    Мне нужно сохранить изображение с URL-адреса PHP на мой компьютер. Скажем, у меня есть страница, https://example.com/image.php , держа единственное изображение «цветок», ничего больше. Как сохранить это изображение из URL с новым именем (используя PHP)?

    9 ответов

    Если у вас allow_url_fopen установлено значение true :

    Здесь вы идете, пример сохраняет удаленное изображение на image.jpg.

    Ответ Vartec с cURL не работал у меня. Это произошло с небольшим улучшением из-за моей конкретной проблемы.

    например.,

    При переадресации на сервере (например, когда вы пытаетесь сохранить изображение профиля facebook) вам понадобится следующий параметр:

    Сохранение изображения из PHP URL

    Мне нужно сохранить изображение с PHP-URL на мой компьютер. Допустим, у меня есть страница https://example.com/image.php , содержащая одно изображение цветка, и ничего больше. Как я могу сохранить это изображение из URL с новым именем (используя PHP)?

    11 ответов

    Если для allow_url_fopen установлено значение true :

    Итак, пример сохраняет удаленное изображение в image.jpg.

    Ответ Вартека с cURL не сработал для меня. Это произошло с небольшим улучшением из-за моей конкретной проблемы.

    Например,

    Когда на сервере происходит перенаправление (например, когда вы пытаетесь сохранить изображение профиля в Facebook), вам понадобится следующий набор параметров:

    Полное решение становится:


    Блог Александра Денисюка

    В этой статье подробно разберём механизм загрузки изображений на сервер с помощью PHP не прибегая к сторонним компонентам и фреймворкам. Научимся безопасно загружать изображения не только с локальной машины пользователя, но и удалённые файлы по ссылке. Все примеры кода я буду писать в процедурном стиле, дабы вы быстрее могли читать код, а не перескакивать с одного метода на другой. Руководство полностью авторское и не претендует на какую-либо академичность изложения.

    §1. Общие принципы

    Всю последовательность загрузки изображения на сервер можно отобразить следующим образом: настройка php.iniполучение файлапроверка безопасностивалидация данныхсохранение на диск. Процесс загрузки картинки с компьютера пользователя или по URL ничем не отличаются, за исключением способа получения изображения и его сохранения. Общая схема загрузки картинки на сервер выглядит следующим образом:

    Для валидации картинки по URL мы будем использовать функцию getimagesizefromstring(), т. к. cURL скачает её в переменную для дальнейших манипуляций.

    Поскольку мы загружаем изображения на сервер, то хорошо было бы проверять их определённые параметры: ширину, высоту, тип картинки, размер файла в байтах. Это зависит от логики вашего приложения, но для наглядности в этом руководстве мы проверим все вышеописанные параметры.

    §2. Правила безопасности

    Безопасность загрузки изображений сводится к недопущению попадания на сервер чужеродного кода и его выполнения. На практике загрузка картинок наиболее уязвимое место в PHP-приложениях: попадание shell-скриптов, запись вредоносного кода в бинарные файлы, подмена EXIF-данных. Для того, чтобы избежать большинства методов взлома нужно придерживаться следующих правил:

    Если есть чем дополнить «Правила безопасности», тогда оставляйте свои замечания или ссылки на статьи по безопасности в комментариях к этому руководству, а я опубликую их в этом параграфе.

    §3. Конфигурация php.ini

    PHP позволяет внести определённые конфигурационные значения в процесс загрузки любых файлов. Для этого необходимо в файле php.ini найти блоки «Resource Limits», «Data Handling» и «File Uploads», а затем отредактировать, по необходимости, следующие значения:

    Исходя из указанных значений, пользователь не сможет за один раз загрузить больше десяти файлов, причём каждый файл не должен превышать 5 Мбайт. Параметры из блока «Resource Limits» больше нужны для загрузки удалённого файла, т. к. с помощью cURL мы будем скачивать содержимое в переменную и проверять её по нужным нам критериям, а для этого необходимо дополнительное время и память.

    50 Мбайт памяти. Кроме того, нам нужно знать максимальное время загрузки одного файла с локальной машины и по ссылке, дабы установить достаточное время выполнения скрипта в max_execution_time и не пугать пользователей ошибками.

    §4. Загрузка картинок из формы

    Сейчас мы не будем рассматривать загрузку нескольких файлов на сервер, а разберём лишь саму механику загрузки на примере одного файла. Итак, для загрузки картинки с компьютера пользователя необходимо с помощью HTML-формы отправить файл PHP-скрипту методом POST и указать способ кодирования данных enctype=»multipart/form-data» (в данном случае данные не кодируются и это значение применяется только для отправки бинарных файлов). С формой ниже мы будем работать дальше:

    Для поля выбора файла мы используем имя name=»upload» в нашей HTML-форме, хотя оно может быть любым. После отправки файла PHP-скрипту file-handler.php его можно перехватить с помощью суперглобальной переменной $_FILES[‘upload’] с таким же именем, которая в массиве содержит информацию о файле:

    Не всем данным из $_FILES можно доверять: MIME-тип и размер файла можно подделать, т. к. они формируются из HTTP-ответа, а расширению в имени файла не стоит доверять в силу того, что за ним может скрываться совершенно другой файл. Тем не менее, дальше нам нужно проверить корректно ли загрузился наш файл и загрузился ли он вообще. Для этого необходимо проверить ошибки в $_FILES[‘upload’][‘error’] и удостовериться, что файл загружен методом POST с помощью функции is_uploaded_file(). Если что-то идёт не по плану, значит выводим ошибку на экран.

    Для того, чтобы злоумышленник не загрузил вредоносный код встроенный в изображение, нельзя доверять функции getimagesize(), которая также возвращает MIME-тип. Функция ожидает, что первый аргумент является ссылкой на корректный файл изображения. Определить настоящий MIME-тип картинки можно через расширение FileInfo. Код ниже проверит наличие ключевого слова image в типе нашего загружаемого файла и если его не окажется, выдаст ошибку:

    На данном этапе мы уже можем загружать абсолютно любые картинки на наш сервер, прошедшие проверку на MIME-тип, но для загрузки изображений по определённым характеристикам нам необходимо валидировать их с помощью функции getimagesize(), которой скормим сам бинарный файл $_FILES[‘upload’][‘tmp_name’]. В результате мы получим массив максимум из 7 элементов:

    Для дальнейшей валидации изображения и работы над ним нам необходиом знать только 3 значения: ширину, высоту и размер файла (для вычисления размера применим функцию filesize() для бинарного файла из временной папки).

    После всех проверок мы можем с уверенностью переместить наш загружаемый файл в какую-нибудь папку с картинками. Делать лучше это через функцию move_uploaded_file(), которая работает в безопасном режиме. Перед перемещением файла нельзя забыть сгенерировать случайное имя и расширение из типа изображения для нашего файла. Вот так это выглядит:

    На этом загрузка изображения завершена. Для более удобной загрузки файлов можете использовать класс UploadedFile из пакета Symfony HttpFoundation, который является обёрткой для $_FILES и также сохраняет файл через move_uploaded_file().

    §5. Загрузка изображения по ссылке

    Для загрузки изображения по ссылке нам понадобиться библиотека cURL, которая работает с удалёнными ресурсами. С помощью неё мы скачаем контент в переменную. С одной стороны может показаться, что для этих целей подойдёт file_get_contents(), но на самом деле мы не сможем контролировать объём скачиваемых данных и нормально обрабатывать все возникшие ошибки. Для того, чтобы cURL корректно скачал данные нам нужно: разрешить следовать перенаправлениям, включить проверку сертификата, указать максимальное время работы cURL (формируется за счёт объёма скачиваемых данных и средней скорости работы с ресурсом). Как правильно скачать файл в переменную показано ниже с необходимыми параметрами:


    Если всё прошло успешно и cURL уложился в 60 секунд, тогда содержимое по ссылке будет скачано в переменную $raw. Кроме того, функция curl_getinfo() вернёт информацию о проделанном запросе, откуда мы можем получить дополнительную информацию для анализа работы с удалёнными ресурсами:

    Дальше нам нужно проверить нет ли ошибок в curl_errno() и удостовериться, что ресурс отдаёт равный 200, иначе мы скажем, что по такому-то URL ничего не найдено. После всех проверок переменную $raw передаём в getimagesizefromstring() и работаем уже по отработанной схеме как в случае с загрузкой картинок из формы.

    Для сохранения изображения на диск можно воспользоваться file_put_contents(), которая запишет контент в файл. Новое имя файла мы создадим через функцию md5(), а расширение сделаем из image_type_to_extension(). Теперь мы можем загружать любые картинки по ссылке.

    §6. Настройка выбора нескольких файлов

    В этом параграфе разберём способы загрузки нескольких изображений за один раз с локальной машины пользователя и по удалённым ссылкам. Для отправки ссылок мы задействуем $_POST и передадим ей все данные с помощью тега textarea. Для загрузки файлов из формы мы продолжим дальше работать с $_FILES. Наша новая HTML-форма будет немного отличаться от старой.

    В конец имени поля выбора файла name=»upload[]» добавились фигурные скобки и аттрибут multiple, который разрешает браузеру выбрать несколько файлов. Все файлы снова загрузятся во временную папку, если не будет никаких ошибок в php.ini . Перехватить их можно в $_FILES, но на этот раз суперглобальная переменная будет иметь неудобную структуру для обработки данных в массиве. Решается эта задача небольшими манипуляциями с массивом:

    Для загрузки нескольких картинок по URL передадим наши ссылки через textarea с именем name=»upload», где их можно указать через пробел или с новой строки. Функция preg_split разберёт все данные из $_POST[‘upload’] и сформирует массив, по которому нужно пройтись циклом и каждый валидный URL отправить в обработчик.

    Вы можете улучшить форму для загрузки изображений, например, воспользоваться библиотекой FineUploader или jQuery FileUpload, чтобы настроить выбор картинок с определённым расширением.

    Saving image from PHP URL

    I need to save an image from a PHP URL to my PC. Let’s say I have a page, https://example.com/image.php , holding a single «flower» image, nothing else. How can I save this image from the URL with a new name (using PHP)?

    11 Answers 11

    If you have allow_url_fopen set to true :

    Here you go, the example saves the remote image to image.jpg.

    Vartec’s answer with cURL didn’t work for me. It did, with a slight improvement due to my specific problem.

    e.g.,

    When there is a redirect on the server (like when you are trying to save the facebook profile image) you will need following option set:

    The full solution becomes:

    I wasn’t able to get any of the other solutions to work, but I was able to use wget:

    Create a folder named images located in the path you are planning to place the php script you are about to create. Make sure it has write rights for everybody or the scripts won’t work ( it won’t be able to upload the files into the directory).

    install wkhtmltoimage on your server then use my package packagist.org/packages/tohidhabiby/htmltoimage for generate an image from url of your target.

    protected by Community ♦ Mar 14 ’12 at 19:18

    Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

    Would you like to answer one of these unanswered questions instead?

    Как скачать и сохранить удаленное изображение с помощью PHP


    Главное меню » Блог-платформа wordpress » Как скачать и сохранить удаленное изображение с помощью PHP

    Как скачать и сохранить удаленное изображение с помощью PHP

    Есть три способа загрузки удаленного изображения, которое описано ниже. Опишем все методы и вы можете использовать любой из них, как вам удобно.

    Метод 1

    Вы можете использовать простую PHP функцию copy() для сохранения удаленных изображений на сервере.

    Способ 2

    функция file_get_contents () копирует удаленное изображение а функция file_put_contents () будет вставить его в папку назначения на сервере.

    Способ 3

    Вы также можете загрузить изображения с помощью curl, чтобы сохранить удаленный файл на сервере. Используйте ниже код в файле PHP.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Сохранение изображения с заданного URL-адреса PHP

    Здесь могла бы быть ваша реклама

    Покинул форум
    Сообщений всего: 4574
    Дата рег-ции: Июль 2006
    Откуда: Israel

    Секрет
    Теперь, когда вы уже наверняка второпях отправили свой запрос,
    я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
    даже если первый ответ по теме последуем сразу же.

    Само собой я знаю что ответят мне тут же, и если я посмотрю
    на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
    Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
    вопрос автора и еще два сообщение вида Ответ + Спасибо

    После этого приходится начинать уточнять этим неграмотным что мне надо.
    Они что, сами читать не умеют? А уточнять приходится.
    И иногда пока они переварят то что я им скажу проходит и не одна ночь..

    Уверен что если бы я им сказал что у меня есть
    фиолетовый квадрат, и нужно превратить его в синий треугольник
    и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
    но почему то кисточка не принимала цвет краски в банке,
    то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
    предложив её открыть, а не тратить еще стольник на жестянку.

    Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
    Что есть
    Что нужно получить
    Как я пытался
    Почему или что у меня не получилось.

    На последок как оно происходит на форумах

    Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
    Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
    Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
    Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
    Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
    Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
    Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
    Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
    Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
    Новичок: Спасибо, братан! То что нужно.

    Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

    Сохранение изображения с URL-адреса PHP — php

    Мне нужно сохранить изображение с URL-адреса PHP на мой компьютер. Скажем, у меня есть страница, https://example.com/image.php , держа единственное изображение «цветок», ничего больше. Как сохранить это изображение из URL с новым именем (используя PHP)?

      5 11
    • 11 окт 2020 2020-10-11 11:07:31
    • riad

    11 ответов

    установите wkhtmltoimage на свой сервер, а затем используйте мой пакет packagist.org/packages/tohidhabiby/htmltoimage для создания изображения из URL вашей цели.

    • 11 окт 2020 2020-10-11 11:07:34
    • TohidHabiby
    • 11 окт 2020 2020-10-11 11:07:34
    • sen

    Создайте папку с именем images, расположенную в пути, который вы планируете разместить php script, который вы собираетесь создать. Удостоверьтесь, что у него есть права на запись для всех или скрипты не будут работать (он не сможет загрузить файлы в каталог).

    • 11 окт 2020 2020-10-11 11:07:33
    • Ibrahim
    • 11 окт 2020 2020-10-11 11:07:33
    • zloctb
    • 11 окт 2020 2020-10-11 11:07:33
    • karl

    Мне не удалось получить какие-либо другие решения для работы, но я смог использовать wget:

    • 11 окт 2020 2020-10-11 11:07:33
    • Andrew

    Ответ Vartec с cURL у меня не сработал. Это произошло с небольшим улучшением из-за моей конкретной проблемы.

    например,

    Когда на сервере происходит перенаправление (например, когда вы пытаетесь сохранить изображение профиля в Facebook), вам понадобится следующий набор параметров:

    Полное решение становится:

    Как сохранить изображение из URL в папке сервера, используя php или javascript?

    У меня есть URL этого изображения ( без расширения ): https://www.google.com/abc/files/AwAh20isBECxwscp4JiT

    Как я могу сохранить это изображение в папке на моем сервере?

    1 ответ

    Вы можете использовать file_get_contents($url) , чтобы получить содержимое любого удаленного файла, если у вас включен allow_url_fopen в вашей конфигурации PHP.

    Как только вы загрузите изображение в память, вы можете сохранить его с помощью

    Пример может выглядеть так:

    Если вы не разрешаете открывать удаленные URL-адреса с помощью fopen() , то у вас есть возможность использовать функциональность cURL для удаленного захвата файлов.

    Мастер Йода рекомендует:  Найти три числа, которые встречаются в массиве по одному разу, при условии, что все другие числа
    Добавить комментарий