Я ищу простой способ импортировать / копировать изображения с удаленного сервера в локальную папку с помощью PHP. У меня нет FTP-доступа к серверу, но ко всем удаленным изображениям можно получить доступ через HTTP (т.е. http://www.mydomain.com/myimage.jpg ).
Пример использования: пользователь желает добавить изображение в свой профиль. Изображение уже существует в Интернете, и пользователь предоставляет прямой URL-адрес. Я не хочу использовать горячую ссылку на изображение, а хочу импортировать и обслуживать его из моего домена.
Ответы:
Если на вашем сервере включен PHP5 и оболочка HTTP-потока, скопировать ее в локальный файл невероятно просто:
copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');
Это позаботится обо всех необходимых конвейерах и т. Д. Если вам нужно предоставить некоторые параметры HTTP, вы можете предоставить третий параметр «контекста потока».
источник
http://desmond.imageshack.us/Himg100/scaled.php?server=100&filename=desertoh.jpg&res=crop
???использовать
$imageString = file_get_contents("http://example.com/image.jpg"); $save = file_put_contents('Image/saveto/image.jpg',$imageString);
источник
PHP имеет встроенную функцию file_get_contents (), которая считывает содержимое файла в строку.
Если вы хотите сохранить файл в базе данных, просто используйте переменную $ content и не сохраняйте файл на диск.<?php //Get the file $content = file_get_contents("http://example.com/image.jpg");
//Store in the filesystem. $fp = fopen("/location/to/save/image.jpg", "w"); fwrite($fp, $content); fclose($fp); ?>
источник
У вас есть четыре возможности:
Удаленные файлы . Это необходимо
allow_url_fopen
включить в php.ini, но это самый простой способ.В качестве альтернативы вы можете использовать cURL, если ваша установка PHP поддерживает его. Есть даже пример .
А если вы действительно хотите сделать это вручную, воспользуйтесь модулем HTTP .
Даже не пытайтесь напрямую использовать сокеты .
источник
Вот самый простой способ:
$url = "http://other-site/image.png"; $dir = "/my/local/dir/"; $rfile = fopen($url, "r"); $lfile = fopen($dir . basename($url), "w"); while(!feof($url)) fwrite($lfile, fread($rfile, 1), 1); fclose($rfile); fclose($lfile);
Но если вы делаете очень много этого (или ваш хост блокирует доступ к файлам удаленным системам), подумайте об использовании CURL, который более эффективен, немного быстрее и доступен на большем количестве общих хостов.
Вы также можете подделать пользовательский агент, чтобы он выглядел как рабочий стол, а не как бот!
$url = "http://other-site/image.png"; $dir = "/my/local/dir/"; $lfile = fopen($dir . basename($url), "w"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'); curl_setopt($ch, CURLOPT_FILE, $lfile); fclose($lfile); curl_close($ch);
В обоих случаях вы можете захотеть передать его через GD, чтобы убедиться, что это действительно изображение.
источник
curl_exec($ch)
раньшеcurl_close($ch)
иfclose($ch)
должны быть помещены в конец, а не раньшеcurl_close($ch)
, это означает, что закройте файл до того, как в него ничего не будет записано, поэтому вы получите только пустой файл.Это очень просто, используя file_get_contents . Просто укажите URL-адрес в качестве первого параметра.
источник
создайте папку и назовите ее, например, загрузите открытый блокнот и вставьте этот код
только измените http://www.google.com/aa.zip на свой файл и сохраните его, например, в m.php
измените php файл на 666 и загрузите папку на 777
<?php define('BUFSIZ', 4095); $url = 'http://www.google.com/aa.zip'; $rfile = fopen($url, 'r'); $lfile = fopen(basename($url), 'w'); while(!feof($rfile)) fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ); fclose($rfile); fclose($lfile); ?>
наконец, из вашего браузера введите этот URL http://www.example.com/download/m.php
вы увидите в папке загрузки файл, скачанный с другого сервера
благодаря
источник
Используйте запрос GET, чтобы загрузить изображение и сохранить его в веб-каталог на вашем сервере.
Поскольку вы используете PHP, вы можете использовать его
curl
для загрузки файлов с другого сервера.источник
Поскольку вы отметили свой вопрос «php», я предполагаю, что php у вас запущен на сервере. Лучше всего, если вы управляете своим собственным веб-сервером, а затем скомпилируете cURL в php. Это позволит вашему веб-серверу делать запросы к другим веб-серверам. Это может быть довольно опасно с точки зрения безопасности, поэтому у большинства основных провайдеров веб-хостинга этот параметр не включен.
Вот справочная страница php по использованию cURL . В комментариях вы можете найти пример, который загружается, и файл изображения.
Если вы не хотите использовать libcurl, вы можете написать что-нибудь с помощью fsockopen. Он встроен в php (но может быть отключен на вашем хосте) и может напрямую читать и писать в сокеты. См. Примеры на странице руководства fsockopen .
источник
Для тех, кому нужно сохранить исходное имя файла и расширение
$origin = 'http://example.com/image.jpg'; $filename = pathinfo($origin, PATHINFO_FILENAME); $ext = pathinfo($origin, PATHINFO_EXTENSION); $dest = 'myfolder/' . $filename . '.' . $ext; copy($origin, $dest);
источник
Этот ответ помог мне загрузить изображение с сервера на клиентскую сторону.
<a download="original_file.jpg" href="file/path.jpg"> <img src="file/path.jpg" class="img-responsive" width="600" /> </a>
источник