(安全下载)PHP直接读取该实际文件然后下载的方法去做

安全|下载

????? 你可能会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:

??????????? $file_name = "tianhys.exee";
??????????? $file_dir = "/public/www/download/";
??????????? if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
??????????? echo "文件找不到";
??????????? exit;
??????????? } else {
??????????? $file = fopen($file_dir . $file_name,"r"); // 打开文件
??????????? // 输入文件标签
??????????? 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);
??????????? // 输出文件内容
??????????? echo fread($file,filesize($file_dir . $file_name));
??????????? fclose($file);
??????????? exit;}

????? 而如果文件路径是"http" 或者 "ftp" 网址的话,则源代码会有少许改变,程序如下:

?

??????????? $file_name = "tianhys.exe";
??????????? $file_dir = "http://www.tianhys.org/";
??????????? $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);
??????????? }

时间: 2024-10-17 15:30:54

(安全下载)PHP直接读取该实际文件然后下载的方法去做的相关文章

下载站mime属性设置(让文件可下载)

有时候一些下载网站为了支持更多的格式,一般情况下支持rar,zip等常用的压缩包文件的下载,对于iso等很多文件都是不支持下载,其实通过设置mime就可以了   一般软件下载 .torrent application/octet-stream .7z application/octet-stream .iso application/octet-stream 手机相关类型: .apk application/vnd.android.package-archive .ded application

下载站mime属性设置(让文件可下载)_服务器其它

一般软件下载 .torrentapplication/octet-stream .7zapplication/octet-stream .isoapplication/octet-stream 手机相关类型: .apkapplication/vnd.android.package-archive .dedapplication/vnd.iphone .dmg application/octet-stream .ipaapplication/vnd.iphone .app application/

ASP如何读取XML数据文件?有什么方法?

xml|数据 分别保存下面两段代码,一个保存为readxml.asp另一个保存为test.xml,放在同一个目录下面,调试程序即可,在程序里面我已经做了解释,读取代码可以做成一个readxml的函数,通过使用输入的参数而读取xml不同数据记录的不同的值.这段程序的改编来自互联网,有什么出入请见谅. readxml.asp <%dim xml,objNode,objAtr,nCntChd,nCntAtrSet xml=Server.CreateObject("Microsoft.XMLDOM

Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)_实用技巧

这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 生成Excel文件的方法,见:[原].Net创建Excel文件(插入数据.修改格式.生成图表)的方法 先试用Response.WriteFile的方法: 复制代码 代码如下: FileInfo fi = new FileInfo(excelFile);//excelFile为文件在服务器上的地址 HttpResponse contextResponse = HttpContext.Current.Response; cont

如何在设计网站时将文件自动下载到本地,下一次访问时自动先在本地读取?

问题描述 如何在设计网站时将文件自动下载到本地,下一次访问时自动先在本地读取? 远程云服务器上有图像.视频等文件,为提高速度.降低费用,想: 1.浏览器初次访问远程服务器,下载图片和视频: 2.下载的图片和视频存在本地,并供浏览器使用: 3.后续浏览器打开网页要使用图像和视频,自动在本地搜索,若没有,再在服务器上下载. 如何实现?不用activex.java ap 实现,免得使用者需要安装加载项. 解决方案 html5的话,可以用localstorage,IE9以上以及主流浏览器支持. 用法自己

sftp下载zip文件-java从sftp上下载到本地磁盘的zip文件读取不了,请大家帮忙解答下,谢谢!

问题描述 java从sftp上下载到本地磁盘的zip文件读取不了,请大家帮忙解答下,谢谢! 从sftp上下载到本地的zip文件是没问题的,用压缩工具打开能查看里面的文件,为什么就是读取不了呢? java从sftp下载zip文件到本地磁盘代码: import java.io.InputStream; import java.util.Date; import com.ibm.gbs.ai.portal.framework.util.DateUtils; import com.jcraft.jsch

java 通过apache ftp读取大文件或者下载大文件

问题描述 java 通过apache ftp读取大文件或者下载大文件 本人技术短,参照网上各位大侠的帖子写了登录ftp去读取ftp下面文件然后直接存进数据库的代码 ,但是我的代码只能读取一些小的文件,文件大点就报内存溢出.谁可以给个能在ftp上面下载大文件或者能够直接读取ftp服务器上面的大文件然后直接解析存进数据库的代码例子.不胜感激. 解决方案 内存溢出..说明内存方步下文件..ftp取到liu后写入文件吧...ps都内存溢出了..你不可能在内存中解析的..有可能是你jvm内存设置太小所致.

用Java实现HTTP文件队列下载

下载 序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难. 在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的:正因如此,我们就可以用程序来完成这个资源的完全下载. 1. 基础知识 在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源

asp.net使用npoi读取excel模板并导出下载详解

 这篇文章主要介绍了asp.net使用npoi读取excel模板并导出下载的示例,大家参考使用吧 为什么要使用NPOI导出Excel?   一.解决传统操作Excel遇到的问题:   如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机. Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123. 导出时,如果字段内容以"-"