创建临时URL以下载文件

时间:2018-11-21 07:08:51

标签: php

我正在一个项目中,我将通过邮件发送文件URL来下载文件。

我使用Mega托管文件时,将Mega文件的URL保存到数据库中。

该脚本将从数据库中获取Mega文件的URL,但是在这里我想缩短Mega文件的URL,使其仅可使用3个小时,然后,缩短URL将失效。

3 个答案:

答案 0 :(得分:1)

您可以尝试Bitly来缩短URL。您需要向他们注册并获得访问令牌。

在URL下方使用您可以生成短URL。您只需要传递长URL作为带有访问令牌的输入。

https://api-ssl.bitly.com/v3/shorten?access_token=ACCESS_TOKEN&longUrl=http%3A%2F%2Fgoogle.com%2F

OR

/* returns the shortened url */
function get_bitly_short_url($url,$login,$appkey,$format='txt') {
    $connectURL = 'http://api.bit.ly/v3/shorten?login='.$login.'&apiKey='.$appkey.'&uri='.urlencode($url).'&format='.$format;
    return curl_get_result($connectURL);
}

/* returns expanded url */
function get_bitly_long_url($url,$login,$appkey,$format='txt') {
    $connectURL = 'http://api.bit.ly/v3/expand?login='.$login.'&apiKey='.$appkey.'&shortUrl='.urlencode($url).'&format='.$format;
    return curl_get_result($connectURL);
}

/* returns a result form url */
function curl_get_result($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

/* get the short url */
$short_url = get_bitly_short_url('https://google.com/','loginname','xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

/* get the long url from the short one */
$long_url = get_bitly_long_url($short_url,'loginname','xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

答案 1 :(得分:1)

您可以简单地在服务器上创建任何想要的随机URL,将其映射到数据库中的条目,如果在有效期间有人请求该URL,则将请求重定向到您存储在数据库中的实际超级URL。 / p>

您如何决定“缩短” URL取决于您,并且主要取决于美观程度。

也许有人想要

  

www.mysit.com/file.php?uid=8s9f1e3f2v78d9f172fd3easvcd9871

  

www.mysite.com/ge723gdn328

当您存储文件存储时,它在指向实际URL之前的时间以及文件的唯一ID(在您提供的“缩短” URL中将是唯一的)有效。例如,它可以是实际文件URL的哈希(或一些友好的标识符),然后您可以肯定它是唯一的。

发出请求后,获取唯一ID,从数据库中获取数据,重定向(或代理)实际文件的内容。

答案 2 :(得分:0)

我对解决方案的想法是让您在数据库中添加新列,以在其中存储Mega文件的URL,例如“ shortURL”,您将在其中生成一些字符串并将其保存在那里。然后,当用户访问“ yourdomain.com/randomString”时,他/她将被重定向到Mega文件的URL。您需要做的最后一件事是运行在服务器上的cron job,它将在一段时间(3小时)后删除shorURL。如果时间到了,用户访问“ yourdomain.com/randomString”,他将被重定向到主页,否则将显示错误页面,表明链接已过期。

我想还有其他一些方法可以做您想要的事情,但这是我想到的第一个方法。