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