我正在建立一个“高级”部分的我的网站和即时通讯需要给予下载访问的文件在远程直接(在不同的服务器上),有特殊特权的用户(帐户存储在mysql数据库中)。我的网站是用php/mysql编码的,所以php解决方案会很棒。
发布于 2009-10-11 07:22:13
将所有下载链接指向一个php文件,该文件将执行所有的凭证检查。
您可以将该文件命名为download.php
通过cookie、get、post、session或任何验证权限的方式传递参数。
一旦验证了凭据,您就可以发送相应的标头。
如果是图像,则头文件应为header("Content-type: image/jpeg");
我假设您也拥有这个远程服务器。
一些有用的链接:
MIME types
PHP Header Function
发布于 2009-10-11 07:28:11
正如@pxl所说,您需要检查授权,然后将正确的mime类型作为HTML头输出(就像他所说的:header("Content-type: image/jpeg");)
此外,一旦完成此操作,您将需要输出文件的实际内容以及文件的大小(以字节为单位):
header("Content-Length: ".filesize("FILENAME")*1.001);
/* The *1.001 puts a nice buffer on the filesize, I read about it online.
Browsers will stop downloading exactly at the Content-Length, but if they go
over, it's not a big deal at all. */
readfile("FILENAME");
die();只需确保将文件存储在无法从web访问的目录中即可。
发布于 2009-10-11 07:23:40
我习惯于在内置了它的ASP.NET中这样做,但是这个article似乎记录了您的实际情况。
https://stackoverflow.com/questions/1550071
复制相似问题