【问题标题】:Create a URL that expires and map it to an asset创建一个过期的 URL 并将其映射到资产
【发布时间】:2014-05-08 09:33:13
【问题描述】:

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

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

我发现很少有链接,但它是针对 Amazon S3-

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

【问题讨论】:

    标签: php node.js apache url


    【解决方案1】:

    如果我对您的理解正确,您可以做一个将动态 url 映射到资产的数据库表。

    例如

    asset_maps
    
    id | urlcode | asset | expire
    1  | somerandomcode | /var/whatever/path/myfile.jpg | someunixtimestamp
    

    那么如果你有一个php脚本,你可以将随机生成的代码作为参数传入,然后获取资产。

    例如

    如果您有以下数据库记录:

    id:2 网址代码:ABC123 资产:/var/stuff/file.zip 过期:123456789

    假设你的 php 文件名为“file.php”

    您可以通过以下方式访问它:file.php?file=ABC123

    然后在 file.php 中,您可以使用该查询参数来查找要检索的资产,并确保它尚未过期。

    然后您可以使用 file_info 找出文件的类型并发送相关标题以强制下载该资产。

    --

    然后您可以使用 .htaccess 将 url 格式化为不同的格式,例如

    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;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2019-08-29
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多