我的服务器上有一些文件,可以公开访问。我想创建一个动态URL并将其映射到存储在我的服务器上的资产。例如,我服务器上的资产路径是/serverurl/images/image1.png。
我想编写一个脚本来创建动态随机URL来访问随时间过期的资产,让我们说4天后。 http://urlthatexpires.com/randomkey
我发现很少有链接,但是它适用于Amazon S3 -
http://css-tricks.com/snippets/php/generate-expiring-amazon-s3-link/
答案 0 :(得分:0)
如果我正确理解你,你可以做的是有一个数据库表,将动态网址映射到资产组。
E.g。
asset_maps
id | urlcode | asset | expire
1 | somerandomcode | /var/whatever/path/myfile.jpg | someunixtimestamp
然后,如果你有一个php脚本,你可以将随机生成的代码作为参数传入,并获取资产。
e.g。
如果您有以下数据库记录:
id:2 urlcode:ABC123 asset:/var/stuff/file.zip 到期:123456789
让#s说你的php文件名为“file.php”
您可以通过以下方式访问它:file.php?file = ABC123
然后在file.php中,您可以使用该查询参数来查找要检索的资产,并确保它尚未过期。
然后,您可以使用file_info查找该文件的类型并发送相关标头以强制下载该资产。
-
然后,您可以使用.htaccess将网址格式化为不同的内容,例如
或者你想要的任何东西。
-
就实际生成随机码而言,您可以执行以下操作:
function generate_random_string($length=10, $alphaNumericOnly=false)
{
$chars = " _?!@#~ 23456789 _?!@#~ AzBbCcDdEeFfGgHhJjKkMmNn _?!@#~ PpQqRrSsTtUuVvWwXxYyZz _?!@#~ 23456789 _?!@#~ ";
if ($alphaNumericOnly){
$chars = preg_replace("/[^a-z0-9]/i", "", $chars);
}
$l = strlen($chars) - 1;
$output = "";
for($i = 0; $i < $length; $i++)
{
$r = mt_rand(0, $l);
$output .= $chars[$r];
}
return $output;
}