public function downloadfile(){ //下載FTP中的一個文件 (已測試成功)
$file_name = "root.php";
$file_dir = $this->webdir;
if (!file_exists($file_dir."/".$file_name)){ //檢查文件是否存在
return false;
exit;
}else{
$file = fopen($file_dir."/".$file_name,"r"); // 打開文件
// 輸入文件標(biāo)簽
header('Content-Encoding: none');
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize($file_dir."/".$file_name));
header( 'Content-Transfer-Encoding: binary' );
header("Content-Disposition: attachment; filename=" .$file_name); //以真實(shí)文件名提供給瀏覽器下載
header('Pragma: no-cache');
header('Expires: 0');
//輸出文件內(nèi)容
echo fread($file,filesize($file_dir."/".$file_name));
fclose($file);
exit;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
你一定會笑我"下載文件"如此簡單都值得說,?當(dāng)然并不是想象那么簡單。例如你希望客戶要填完一份表格,,才可以下載某一文件,,你第一個想法一定是用 "Redirect"的方法,先檢查表格是否已經(jīng)填寫完畢和完整,,然后就將網(wǎng)址指到該文件,,這樣客戶才能下載,但如果你想做一個關(guān)于"網(wǎng)上購物"的電子商務(wù)網(wǎng)站,,考慮安全問題,,你不想用戶直接復(fù)制網(wǎng)址下載該文件,筆者建議你使用PHP直接讀取該實(shí)際文件然后下載的方法去做,。程序如下:
$file_name = "info_check.exe";
$file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //檢查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打開文件
// 輸入文件標(biāo)簽
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 輸出文件內(nèi)容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
而如果文件路徑是"http" 或者 "ftp" 網(wǎng)址的話,,則源代碼會有少許改變,程序如下:
$file_name = "info_check.exe";
$file_dir = "http://www./";
$file = @ fopen($file_dir . $file_name,"r");
if (!$file) {
echo "文件找不到";
} else {
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=" . $file_name);
while (!feof ($file)) {
echo fread($file,50000);
}
fclose ($file);
}
這樣就可以用PHP直接輸出文件了,。
<?
$file_name = "0209.jpg";
$file_dir = "./download/";
if (!file_exists($file_dir . $file_name)) { //檢查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打開文件
// 輸入文件標(biāo)簽
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 輸出文件內(nèi)容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
<?php
if (isset($file_name)){
$file_dir = DIR_FS_PRODUCTS."audit\speak\\";
if (!file_exists($file_dir . $file_name)) { //檢查文件是否存在
zen_jump_page("你下載的文件沒找到!請聯(lián)系管理員!");
} else {
//echo $add_log_tsql;
$file = fopen($file_dir . $file_name,"r"); // 打開文件
// 輸入文件標(biāo)簽
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 輸出文件內(nèi)容
echo fread($file,filesize($file_dir . $file_name));
if(fclose($file)){
$c_ipaddr=$_SERVER['REMOTE_ADDR'];
$add_log_tsql="insert into sp_fdownload_log (dl_dfilename,dl_duser,dl_pr_seq,dl_dtype,dl_module,dl_dipaddr,dl_createtime) values ('".$file_name."','".$park_userid."',".$prod_seq.",".$dtype.",'".$park_support."','".$c_ipaddr."',now())";
$add_log=$db->execute($add_log_tsql);
$end_download_tsql="update sp_fdownload set fd_used_times=fd_used_times+1 where fd_id=".$fd_id." and fd_userid=".$park_userid;
$end_download_query=$db->execute($end_download_tsql);
$update_prod_tsql="update sp_products set pr_download_times=pr_download_times+1 where pr_seq=".$prod_seq;
$update_prod=$db->execute($update_prod_tsql);
}
}
}else{
zen_jump_page("沒有你要下載的文件!");
}
?>