创建过期的URL并将其映射到资产

时间:2014-05-08 09:33:13

标签: php node.js apache url

我的服务器上有一些文件,可以公开访问。我想创建一个动态URL并将其映射到存储在我的服务器上的资产。例如,我服务器上的资产路径是/serverurl/images/image1.png。

我想编写一个脚本来创建动态随机URL来访问随时间过期的资产,让我们说4天后。 http://urlthatexpires.com/randomkey

我发现很少有链接,但是它适用于Amazon S3 -

http://css-tricks.com/snippets/php/generate-expiring-amazon-s3-link/

1 个答案:

答案 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将网址格式化为不同的内容,例如

http://f.yoursite.com/ABC123

或者你想要的任何东西。

-

就实际生成随机码而言,您可以执行以下操作:

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;

}