2012-06-07 19 views
6

Tôi gặp vấn đề nghiêm trọng trong giai đoạn cuối của dự án mà tôi đang làm việc:Tự động tải xuống hình ảnh từ bất kỳ vị trí URL nào

Tôi đã viết một chức năng PHP giúp người dùng có thể tự động tải xuống hình ảnh một ổ cứng bằng cách nhấp vào liên kết của nó. Nhưng điều đó thật dễ dàng vì hình ảnh đã được tải lên máy chủ trang web và tôi biết đó là địa chỉ máy chủ đầy đủ. Ví dụ: "home/clients/websites/w_apo/public_html/wp-content/uploads/image.jpg"

Nhưng hiện tại khách hàng muốn có khả năng dán URL hình ảnh từ địa chỉ riêng của mình http://www.something.com/image.jpg và vẫn có thể tự động tải xuống hình ảnh đó bằng cách nhấp vào liên kết trên giao diện người dùng.

Tôi là người mới trong lĩnh vực lập trình này nên tôi thực sự cần sự giúp đỡ của bạn. Bất kỳ liên kết, lời khuyên, tài nguyên được chào đón nhất.

Cảm ơn!

Đây là chức năng hiện tại của tôi để tải về:

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

bài viết mã của bạn. Đã đăng –

+0

. bạn có thể cho tôi biết cách điều chỉnh nó không? thanks –

+0

Vị trí hình ảnh mới có đến từ các nguồn khác nhau không? Hoặc chúng sẽ được đặt trên cùng một máy chủ? –

Trả lời

10

Bạn có một vài lựa chọn. # 1 sử dụng file_get_contents. Nó không phải là cách tốt nhất, nhưng nó sẽ hoạt động.

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

cURL Lựa chọn # 2 sử dụng:

See this example

+0

điều này giúp, tôi tin rằng tôi có thể mang nó từ đây. –

Các vấn đề liên quan