apache php的权限,使用Apache和PHP的选择性文件下载权限

我有一个带有文件下载选项的网站。然而,不是每个人都可以下载每个文件。例如,如果我以管理员身份登录,我可以下载所有文件,但如果我以客户身份登录,我只能下载某些文件。使用Apache和PHP的选择性文件下载权限

目前,所有这些文件都存储在Web根目录之外的目录中,因此用户不能手动下载。我制作了一个PHP脚本来管理文件的下载,但它非常麻烦。我试过几件事情:

1:

echo file_get_contents($file);

2:

readfile($file);

3:

if (($handle = fopen($file, "rb")) !== false)

{

while (!feof($handle))

{

echo fread($handle, 4096);

}

fclose($handle);

}

我发现所有的这些方法与测试时是非常不可靠500MB文件。第一个和第二个都会因所有浏览器和随机百分比而失败。有时候他们在几兆字节后就已经失败了,而其他时候他们已经达到了80%。但最终他们会停止下载没有任何错误。

第三方法是最可靠的。它在Firefox中很好地下载(虽然速度太慢;当它来自本地主机时,速度大约为700KB/s,当它工作时读取文件的方法速度为25MB /秒)和Chrome,但在Internet Explorer中,它大部分都失败了。在IE中,它首先陷入“获取文件信息”而没有获得任何“打开/保存”对话框。当我取消并再次尝试时,我会看到一个“打开/保存”对话框。

我在网上搜索,我无法找到,实际工作以及任何令人满意的方法。最好我只是希望Apache能够处理文件下载,因为它始终可以毫无问题地正常工作。但我不想将所有文件放入公共目录,因为每个人都可以下载所有文件。

我有什么选择?有没有最好的方法?因为他们填补了脚本与文件的内容存储

2010-11-10

pbean

+1

设置文件/ MIME头 - '' –

2010-11-10 14:12:43

+1

如果您启用了Apache的deflate模块,请不要忘记关闭下载脚本。它让我头痛了几个小时,因为Firefox在下载时没有显示进度条。要关闭它,请将'SetEnv no-gzip'添加到.htaccess文件中。 –

2010-11-10 14:29:15

+0

感谢您的提示,Lekensteyn,我看到它在另一个下载脚本示例中使用,以便及时检查是否启用了放气模块。我没有启用它。 –

2010-11-10 15:06:49

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值