2012-06-07 14 views
6

que tengo un problema serio en la última etapa de un proyecto que estoy trabajando:descargar imágenes automáticamente desde cualquier ubicación URL

escribí una función PHP que hace posible que un usuario descargue automáticamente una imagen en un disco duro haciendo clic en su enlace. Pero eso fue fácil porque la imagen se cargó en el servidor del sitio web y supe que es la dirección completa del servidor. Por ejemplo: "home/clients/websites/w_apo/public_html/wp-content/uploads/image.jpg"

Pero ahora el cliente quiere la capacidad de pegar la URL de la imagen de su propia dirección de http://www.something.com/image.jpg y aún así ser capaz de descargar automáticamente esa imagen haciendo clic en el enlace en la interfaz.

Soy algo nuevo en esta área de programación, así que realmente necesito su ayuda. Cualquier enlace, consejo, recursos son bienvenidos.

Gracias!

Ésta es mi función actual para la descarga:

download_file($_GET['file']); 

/******************************************************************/ 

function download_file($fullPath){ 

    // Must be fresh start 
    if(headers_sent()) 
    die('Headers Sent'); 

    // Required for some browsers 
    if(ini_get('zlib.output_compression')) 
    ini_set('zlib.output_compression', 'Off'); 

    // File Exists? 
    if(file_exists($fullPath)){ 

    // Parse Info/Get Extension 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 

    // Determine Content Type 
    switch ($ext) { 
     case "pdf": $ctype="application/pdf"; break; 
     case "exe": $ctype="application/octet-stream"; break; 
     case "zip": $ctype="application/zip"; break; 
     case "doc": $ctype="application/msword"; break; 
     case "xls": $ctype="application/vnd.ms-excel"; break; 
     case "ppt": $ctype="application/vnd.ms-powerpoint"; break; 
     case "gif": $ctype="image/gif"; break; 
     case "png": $ctype="image/png"; break; 
     case "jpeg": 
     case "jpg": $ctype="image/jpg"; break; 
     default: $ctype="application/force-download"; 
    } 

    header("Pragma: public"); // required 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private",false); // required for certain browsers 
    header("Content-Type: $ctype"); 
    header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".$fsize); 
    ob_clean(); 
    flush(); 
    readfile($fullPath); 

    } else 
    die('File Not Found'); 

} 
+0

publicar su código. –

+0

publicado. ¿Puedes decirme cómo ajustarlo? gracias –

+0

¿La ubicación de la nueva imagen proviene de diferentes fuentes? ¿O estarán ubicados en el mismo servidor? –

Respuesta

10

Usted tiene un par de opciones. # 1 use file_get_contents. No es la mejor manera, pero funcionará.

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

Opción # 2: uso cURL

See this example

+0

esto ayuda, creo que puedo tomarlo desde aquí. –

Cuestiones relacionadas