欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php讓圖片可以下載的代碼

 更新時(shí)間:2008年09月05日 16:50:18   作者:  
讓圖片也能像附件一樣的下載,不多說(shuō)了。請(qǐng)看下面的程序!

復(fù)制代碼 代碼如下:

<?php
// 安全性過(guò)濾
$fileName = basename($_SERVER['QUERY_STRING']);
$filePath = dirname(__FILE__) . ‘/' . DL_DIR . $fileName;

/*
簡(jiǎn)述: DIRECTORY_SEPARATOR(目錄界定符, 目錄函數(shù)庫(kù)預(yù)定義常量)
來(lái)源: Directory 目錄函數(shù)(PHP手冊(cè)->函數(shù)參考->Directories節(jié)點(diǎn))
說(shuō)明: windows系統(tǒng)下為反斜杠'\', Linux系統(tǒng)下為'/',
windows下兩個(gè)都正常用, linux就不知道了, 為了標(biāo)準(zhǔn), 顯得專(zhuān)業(yè)點(diǎn), 嘿嘿.
*/
$filePath = str_replace(array(‘/', ‘\\'), DIRECTORY_SEPARATOR, $filePath);

if(!is_file($filePath)) {
exit(‘File: ' . $fileName . ‘ not exists!');
} else { // 如果是一個(gè)有效的文件
// 文件擴(kuò)展名
$fileExt = substr(strrchr($fileName, ‘.'), 1);
// 文件類(lèi)型
$fileType = $MIMETypes[$fileExt] ? $MIMETypes[$fileExt] : ‘a(chǎn)pplication/octet-stream';
// 是否是圖片
$isImage = False;
/*
簡(jiǎn)述: getimagesize(), 詳見(jiàn)手冊(cè)
說(shuō)明: 判定某個(gè)文件是否為圖片的有效手段, 常用在文件上傳驗(yàn)證
*/
$imgInfo = @getimagesize($filePath);
if ($imgInfo[2] && $imgInfo['bits']) {
$isImage = True;
}

// 顯示方式
$attachment = $isImage ? ‘inline' : ‘a(chǎn)ttachment';

// 讀取文件
if (is_readable($filePath)) {
/*
簡(jiǎn)述: ob_end_clean() 清空并關(guān)閉輸出緩沖, 詳見(jiàn)手冊(cè)
說(shuō)明: 關(guān)閉輸出緩沖, 使文件片段內(nèi)容讀取至內(nèi)存后即被送出, 減少資源消耗
*/
ob_end_clean();
/*
HTTP頭信息: 指示客戶機(jī)可以接收生存期不大于指定時(shí)間(秒)的響應(yīng)
*/
header(‘Cache-control: max-age=31536000′);
/*
HTTP頭信息: 緩存文件過(guò)期時(shí)間(格林威治標(biāo)準(zhǔn)時(shí))
*/
header(‘Expires: ' . gmdate(‘D, d M Y H:i:s', time()+31536000) . ‘ GMT');
/*
HTTP頭信息: 文件在服務(wù)期端最后被修改的時(shí)間
Cache-control,Expires,Last-Modified 都是控制瀏覽器緩存的頭信息
在一些訪問(wèn)量巨大的門(mén)戶, 合理的設(shè)置緩存能夠避免過(guò)多的服務(wù)器請(qǐng)求, 一定程度下緩解服務(wù)器的壓力
*/
header(‘Last-Modified: ' . gmdate(‘D, d M Y H:i:s' , filemtime($filePath) . ‘ GMT'));
/*
HTTP頭信息: 文檔的編碼(Encode)方法, 因?yàn)楦郊?qǐng)求的文件多樣化, 改變編碼方式有可能損壞文件, 故為none
*/
header(‘Content-Encoding: none');
/*
HTTP頭信息: 告訴瀏覽器當(dāng)前請(qǐng)求的文件類(lèi)型.
1.始終指定為application/octet-stream, 就代表文件是二進(jìn)制流, 始終提示下載.
2.指定對(duì)應(yīng)的類(lèi)型, 如請(qǐng)求的是mp3文件, 對(duì)應(yīng)的MIME類(lèi)型是audio/mpeg, IE就會(huì)自動(dòng)啟動(dòng)Windows Media Player進(jìn)行播放.
*/
header(‘Content-type: ' . $fileType);
/*
HTTP頭信息: 如果為attachment, 則告訴瀏覽器, 在訪問(wèn)時(shí)彈出”文件下載”對(duì)話框, 并指定保存時(shí)文件的默認(rèn)名稱(可以與服務(wù)器的文件名不同)
如果要讓瀏覽器直接顯示內(nèi)容, 則要指定為inline, 如圖片, 文本
*/
header(‘Content-Disposition: ' . $attachment . ‘; filename=' . $fileName);
/*
HTTP頭信息: 告訴瀏覽器文件長(zhǎng)度
(IE下載文件的時(shí)候不是有文件大小信息么?)
*/
header(‘Content-Length: ' . filesize($filePath));
// 打開(kāi)文件(二進(jìn)制只讀模式)
$fp = fopen($filePath, ‘rb');
// 輸出文件
fpassthru($fp);
// 關(guān)閉文件
fclose($fp);
exit();
} else {
exit(‘Read file failed!');
}
}
?>

相關(guān)文章

最新評(píng)論