亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP文件下載實(shí)例代碼淺析

 更新時(shí)間:2016年08月17日 15:24:35   作者:Marksinoberg  
這篇文章主要為大家詳細(xì)介紹了PHP文件下載實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

文件下載的功能對(duì)一個(gè)網(wǎng)站而言基本上是必備的了,今天就來(lái)看看PHP是如何實(shí)現(xiàn)文件下載的吧。

無(wú)控制類(lèi)型

這里說(shuō)的無(wú)控制類(lèi)型是指 沒(méi)有添加PHP代碼控制的資源可以被直接下載的那些類(lèi)型。一般而言,壓縮文件.rar; 音視頻文件:..avi等等也可以被直接下載。但是音頻和mp4則會(huì)直接被瀏覽器解析播放。
如下圖:

.avi文件

.avi文件會(huì)被直接下載

.rar文件

.rar文件會(huì)被直接下載

.mp4,MP3,圖片等會(huì)被直接解析

.mp3,4,圖片等文件會(huì)被瀏覽器直接解析播放

核心代碼

使用php代碼控制文件的下載合適很簡(jiǎn)單的。我們住需要很少的代碼便可以完成如此復(fù)雜的工作。

類(lèi)型

// 使用basename函數(shù)可以獲得文件的名稱(chēng)而不是路徑信息,保護(hù)了服務(wù)器的目錄安全性
header("content-disposition:attachment;filename=".basename($filename));

長(zhǎng)度

header("content-length:".filesize($filename));

實(shí)現(xiàn)函數(shù)

<?php

$filename = $_GET['filename'];
// 使用basename函數(shù)可以獲得文件的名稱(chēng)而不是路徑信息,保護(hù)了服務(wù)器的目錄安全性
header("content-disposition:attachment;filename="$filename);
header("content-length:".filesize($filename));
readfile($filename);


?>

優(yōu)化

上面指定文件名稱(chēng)的時(shí)候我們沒(méi)有使用一個(gè)叫basename的函數(shù),這樣我們下載文件的時(shí)候?qū)?huì)連帶著其在服務(wù)器上的文件的完整的路徑。

注意: 下載文件的名稱(chēng)一定不能包含其在服務(wù)器上的完整路徑名稱(chēng),否則有可能會(huì)導(dǎo)致部分資源的泄露。即使有辦法能控制訪問(wèn)資源的權(quán)限,但是使用basename函數(shù)也是很好的。 

原始下載文件的名稱(chēng)

附帶服務(wù)器上的路徑

優(yōu)化后的文件下載名稱(chēng)

使用了basename之后的效果

總結(jié)

php文件下載使用起來(lái)相較于Java實(shí)現(xiàn)真的是太方便了呢。在下載文件的內(nèi)部,有許多的信息提供給我們,通過(guò)這些封裝好的信息,我們可以實(shí)現(xiàn)更加優(yōu)雅的文件下載系統(tǒng)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論