摘要:?jiǎn)栴}說(shuō)明文件下載,通常有一種最為簡(jiǎn)單的方法,那就是將直接指向服務(wù)器上文件的所在位置。
問(wèn)題說(shuō)明
文件下載,通常有一種最為簡(jiǎn)單的方法,那就是將url直接指向服務(wù)器上文件的所在位置。但是這個(gè)方法存在很大的安全隱患。
暴露了服務(wù)器文件目錄結(jié)構(gòu)
無(wú)法禁止非法請(qǐng)求來(lái)源,無(wú)法對(duì)文件下載請(qǐng)求做安全驗(yàn)證
解決方案 一、將文件下載請(qǐng)求映射到后端程序url 借助http服務(wù)器(apache/nginx)實(shí)現(xiàn)映射功能這里以apache為例進(jìn)行說(shuō)明
借助apache的rewrite模塊,配置rewrite規(guī)則。(關(guān)于如何開(kāi)啟rewrite模塊,網(wǎng)上很多資源,這里不再贅訴)
在項(xiàng)目根目錄下創(chuàng)建.htaccess文件,寫(xiě)入rewrite規(guī)則
RewriteEngine on #將所有以rar/zip結(jié)尾的url,映射給download.php文件 RewriteRule (.*.(rar|zip))$ download.php?file=$1 [NC]
將所有以rar/zip結(jié)尾的url,映射給download.php文件(這里為了方便直接映射到了一個(gè)php腳本中,如果是使用框架,那就映射到具體的控制器中的某個(gè)方法!例如:index.php?c=home&a=download)
二、編寫(xiě)具體的文件下載邏輯 項(xiàng)目目錄以本地項(xiàng)目為例,用戶(hù)需要下載的zip文件,放在當(dāng)前項(xiàng)目的temp目錄下
直接上代碼,代碼中有詳細(xì)注釋
這里只是做了一個(gè)示例(只包括核心功能),為了方便說(shuō)明直接以GET方式從url中獲取用戶(hù)想要下載的文件名稱(chēng)
注意以下兩行代碼(為了能夠下載中文名稱(chēng)的文件)
$filePath = iconv("UTF-8","gbk",$filePath); header("Content-type:application/octet-stream; charset=utf-8");如果用戶(hù)需要下載的是中文名稱(chēng)的文件。則需要將文件路徑轉(zhuǎn)換成gbk編碼,否則會(huì)出現(xiàn) 文件不存在 之類(lèi)的錯(cuò)誤。header中設(shè)置utf8編碼,也是同樣的道理
下載文件打開(kāi)瀏覽器,訪問(wèn) http://127.0.0.1/rewrite/尷尬.zip 文件便開(kāi)始下載了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/25752.html
摘要:一介紹與好處介紹本身是一個(gè)中文檢索索引技術(shù)索引主鍵唯一普通全文是俄羅斯人開(kāi)發(fā)一款速度效率非常高的索引技術(shù)是來(lái)替代全文索引的本身的全文索引技術(shù)特性表現(xiàn)一般,一般數(shù)據(jù)庫(kù)使用全文索引都不是使用本身的,都需要借助第方索引技術(shù)支持,搜索引擎百 一.sphinx介紹與好處 介紹 sphinx本身是一個(gè)中文檢索索引技術(shù) mysql索引: 主鍵、唯一、普通、全文(match/agaisnt)sphi...
摘要:語(yǔ)言寫(xiě)的算法教程,看起來(lái)比較草根和接地氣,推薦學(xué)習(xí)。語(yǔ)言圣經(jīng)中文版語(yǔ)言高級(jí)編程中文譯本,中文正式名入門(mén)指南為互聯(lián)網(wǎng)人打造的中文版。 這是一些本人網(wǎng)上搜集到的一些好的學(xué)習(xí)教程、開(kāi)發(fā)資源、和個(gè)人有用的鏈接,以作備份和分享之用。 持續(xù)更新中。。。 編程語(yǔ)言 C 語(yǔ)言資源大全中文版https://github.com/jobbole/aw... ECMAScript 6 入門(mén)http://es...
摘要:語(yǔ)言寫(xiě)的算法教程,看起來(lái)比較草根和接地氣,推薦學(xué)習(xí)。語(yǔ)言圣經(jīng)中文版語(yǔ)言高級(jí)編程中文譯本,中文正式名入門(mén)指南為互聯(lián)網(wǎng)人打造的中文版。 這是一些本人網(wǎng)上搜集到的一些好的學(xué)習(xí)教程、開(kāi)發(fā)資源、和個(gè)人有用的鏈接,以作備份和分享之用。 持續(xù)更新中。。。 編程語(yǔ)言 C 語(yǔ)言資源大全中文版https://github.com/jobbole/aw... ECMAScript 6 入門(mén)http://es...
閱讀 2351·2021-11-24 11:16
閱讀 2038·2021-09-30 09:47
閱讀 2006·2021-09-10 10:51
閱讀 1323·2019-08-30 14:08
閱讀 3141·2019-08-30 13:47
閱讀 1529·2019-08-30 13:02
閱讀 3233·2019-08-29 12:29
閱讀 3198·2019-08-26 17:05