php檔案下載解決辦法

來源:互聯網
上載者:User
php檔案下載
下面是我在網上的找的代碼,自己改了下:

down_file.php:

if(!empty($_GET)){

header("Content-type: application/octet-stream ; charset=utf-8"); //輸出類型
header("Content-Disposition:filename=".$name);
header("Accept-Ranges: bytes"); //檔案單位
header("Accept-Length:".$filesize); //檔案大小
header("Content-Disposition: attachment; filename=".$name);//下載時顯示的名字
$name=$_GET['name'];
$url=$_GET['url'];

$f=fopen($url.$name, "r");
$buffer=1024;
$filesize=filesize($name);
$downsize=0;
$str="";
while(!feof($f) && ($filesize-$downsize)>0){
$downsize+=$buffer;
echo fread($f,$buffer);

}
//echo $str;
fclose($f);

}

?>


html頁面:




Document



下載a.jpg




目的是下載a.jpg,
問題是點擊後快顯視窗下載的是down_file.php而不是a.jpg。。如



求指點一下,能給個能用的代碼更好了
------解決思路----------------------
$name=$_GET['name'];
$url=$_GET['url'];
$filesize=filesize($url.$name);

這三句要放在上面,否則 header("Content-Disposition:filename=".$name); 會拿不到$name導致出notice.

改成這樣

if(!empty($_GET)){
$name=$_GET['name'];
$url=$_GET['url'];
$filesize=filesize($url.$name);

header("Content-type: application/octet-stream ; charset=utf-8"); //輸出類型
header("Content-Disposition:filename=".$name);
header("Accept-Ranges: bytes"); //檔案單位
header("Accept-Length:".$filesize); //檔案大小
header("Content-Disposition: attachment; filename=".$name);//下載時顯示的名字


$f=fopen($url.$name, "r");
$buffer=1024;
$downsize=0;
$str="";
while(!feof($f) && ($filesize-$downsize)>0){
$downsize+=$buffer;
echo fread($f,$buffer);

}
//echo $str;
fclose($f);

}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.