2012-06-07 10 views
6

ho un serio problema nella fase avanzata di un progetto a cui sto lavorando su:scaricare automaticamente le immagini da qualsiasi luogo URL

ho scritto una funzione PHP che rende possibile per un utente di scaricare un'immagine automaticamente un disco rigido facendo clic sul suo collegamento. Ma è stato facile perché l'immagine è stata caricata sul server del sito web e sapevo che era l'indirizzo completo del server. Per esempio: "home/clients/websites/w_apo/public_html/wp-content/uploads/image.jpg"

Ma ora il cliente vuole la capacità di incollare l'URL dell'immagine dal suo proprio indirizzo http://www.something.com/image.jpg e ancora in grado di scaricare automaticamente l'immagine cliccando sul link sul frontend.

Sono un po 'nuovo in questa area di programmazione, quindi ho davvero bisogno del tuo aiuto. Qualsiasi link, consiglio, risorse sono i benvenuti.

Grazie!

Questa è la mia attuale funzione per il download:

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

Pubblica il tuo codice. –

+0

pubblicato. puoi per favore dirmi come aggiustarlo? grazie –

+0

La nuova posizione dell'immagine proviene da fonti diverse? O si troveranno sullo stesso server? –

risposta

10

Hai un paio di opzioni. # 1 utilizza file_get_contents. Non è il modo migliore, ma funzionerà.

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

Opzione # 2: usare curl

See this example

+0

questo aiuta, credo di poterlo prendere da qui. –

Problemi correlati