I have a serious problem in the late stage of the project that I am working on:
I wrote a PHP function that allows the user to automatically upload an image to the hard drive by clicking on its link. But it was easy, because the image was uploaded to the website server, and I knew its full server address. For example: "home/clients/websites/w_apo/public_html/wp-content/uploads/image.jpg"
But now the client wants to insert the image URL from his own address http://www.something.com/image.jpg
and will still be able to automatically download this image by clicking the link on the interface.
I'm a little new in this area of ββprogramming, so I really need your help. Any links, tips, resources are welcome.
Thanks!
This is my current download function:
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'); }
source share