una servidor otro imagenes descargar copiar con archivo php image import curl copy
http://www.google.com/aa.zip

servidor - descargar imagenes de una url con php



Copie la imagen del servidor remoto a través de HTTP (12)

Como ha etiquetado su pregunta ''php'', asumiré que está ejecutando php en su servidor. Su mejor apuesta es si usted controla su propio servidor web, luego compila cURL en php. Esto permitirá que su servidor web realice solicitudes a otros servidores web. Esto puede ser bastante peligroso desde el punto de vista de la seguridad, por lo que la mayoría de los proveedores de alojamiento web básico no tendrán habilitada esta opción.

Aquí está la página de php man sobre el uso de cURL . En los comentarios, puede encontrar un ejemplo de las descargas y el archivo de imagen.

Si no desea usar libcurl, puede codificar algo utilizando fsockopen. Está integrado en php (pero puede estar deshabilitado en su host), y puede leer y escribir directamente en sockets. Vea los ejemplos en la página man de fsockopen .

Estoy buscando una manera simple de importar / copiar imágenes desde un servidor remoto a una carpeta local usando PHP. No tengo acceso FTP al servidor, pero se puede acceder a todas las imágenes remotas a través de HTTP (es decir, http://www.mydomain.com/myimage.jpg ).

Ejemplo de uso: un usuario desea agregar una imagen a su perfil. La imagen ya existe en la web y el usuario proporciona una URL directa. No deseo enlazar la imagen en caliente, sino importarla y publicarla desde mi dominio.


Es extremadamente simple al usar file_get_contents . Simplemente proporcione la url como primer parámetro.


Esta es la forma más básica:

$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);

Pero si está haciendo mucho y mucho de esto (o su host bloquea el acceso de archivos a sistemas remotos), considere usar CURL, que es más eficiente, ligeramente más rápido y disponible en más hosts compartidos.

¡También puede suplantar al agente de usuario para que parezca un escritorio en lugar de un bot!

$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);

Con ambas instancias, es posible que desee pasarlo a través de GD para asegurarse de que realmente es una imagen.


PHP tiene una función incorporada file_get_contents (), que lee el contenido de un archivo en una cadena.

<?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); ?>

Si desea almacenar el archivo en una base de datos, simplemente use la variable $ content y no guarde el archivo en el disco.

Para aquellos que necesitan preservar el nombre de archivo original y la extensión

$origin = ''http://example.com/image.jpg''; $filename = pathinfo($origin, PATHINFO_FILENAME); $ext = pathinfo($origin, PATHINFO_EXTENSION); $dest = ''myfolder/'' . $filename . ''.'' . $ext; copy($origin, $dest);


Si tiene habilitado PHP5 y la envoltura de flujo HTTP en su servidor, es increíblemente simple copiarlo en un archivo local:

copy(''http://somedomain.com/file.jpeg'', ''/tmp/file.jpeg'');

Esto se encargará de cualquier canalización, etc. que se necesite. Si necesita proporcionar algunos parámetros HTTP, hay un tercer parámetro de ''contexto de transmisión'' que puede proporcionar.


Tienes sobre estas cuatro posibilidades:


Traté de copiar / descargar archivos remotos usando la función de copia detrás de un proxy, pero copio se conecta directamente sin proxy.

Traté de configurar mi configuración como contexto predeterminado y la di como parámetro de función para copiar.

Pero parece que el contexto nunca se usa, pero readfile o get_headers usan el mismo contexto con éxito.

Aquí está mi código:

$url = "http://myserver.com/testfile"; $context_opts = array( "http" => array( "proxy" => "tcp://myProxy:8080", "request_fulluri" => True, "ignore_errors" => true ) ); stream_context_get_default($context_opts); print_r(get_headers($url,1)); copy($url,$filename, stream_context_create($context_opts));

Mi servidor se ejecuta con:

  • Windows XP SP3
  • Apache 2.2.12 (ejecutándose como servicio)
  • PHP 5.3.0 (API20090626, TS, VC6) (configurado como módulo apache)

urlfopen está habilitado http y https streams están registrados para php


Use una solicitud GET para descargar la imagen y guardarla en un directorio accesible en la web de su servidor.

Al usar PHP, puede usar curl para descargar archivos del otro servidor.


crear carpeta y ponerle nombre, por ejemplo, descargar el bloc de notas abierto e insertar este código

solo cambie http://www.google.com/aa.zip a su archivo y guárdelo en m.php, por ejemplo

chamod el archivo php a 666 y la descarga de carpeta a 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); ?>

finalmente desde su navegador ingrese a estas URL http://www.example.com/download/m.php

verá en la carpeta de descargas la descarga del archivo desde otro servidor

Gracias


utilizar

$imageString = file_get_contents("http://example.com/image.jpg"); $save = file_put_contents(''Image/saveto/image.jpg'',$imageString);


Esta respuesta me ayudó a descargar la imagen del servidor al lado del cliente.

<a download="original_file.jpg" href="file/path.jpg"> <img src="file/path.jpg" class="img-responsive" width="600" /> </a>