从Dropbox检索永久链接

时间:2016-04-19 16:38:37

标签: dropbox dropbox-api dropbox-php

我们有一个后端系统,在表单填写时生成PDF - 然后将此PDF上传到dropbox,并检索该文件的链接,然后将其添加到数据库中,供我们的供应商查看。

我看起来很高 - 但是获得这些链接的唯一方法是使用 createTemporaryDirectLink 指令。但是,这些链接是临时的,几个小时后就会过期。

我希望获得可共享的非过期链接。

这是我当前正常运行的代码

// Dropbox //
        $dropbox_config = array(
        'key'    => 'xxxx',
        'secret' => 'xxxx'
        );

        $accessToken='xxx-xxxxx';

        $appInfo = dbx\AppInfo::loadFromJson($dropbox_config);
        $webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");


        $dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0");

        $sqlQuery = "select dropboxLink from get_order where orderId='".$lastOrderId."'";
        $rsGetDropLink = mysqli_query($dbLink,$sqlQuery);
        $rowGetDropLink =  mysqli_fetch_assoc($rsGetDropLink);

        $f = fopen("Orders/".$rowGetDropLink['dropboxLink'].'.pdf', "rb");
        $result = $dbxClient->uploadFile("/Orders/".$rowGetDropLink['dropboxLink'].'.pdf', dbx\WriteMode::add(), $f);
        fclose($f);
        print_r($result);

        $file = $dbxClient->getMetadata("/Orders/".$rowGetDropLink['dropboxLink'].'.pdf');
        $dropboxPath = $file['path'];
        $pathError = dbx\Path::findError($dropboxPath);
        if ($pathError !== null) {
        fwrite(STDERR, "Invalid <dropbox-path>: $pathError\n");
        die;
        }
        $link = $dbxClient->createTemporaryDirectLink($dropboxPath);
        $dw_link = $link[0]."?dl=1";

        $sqlQuery = "update get_order set fullDropboxLink='".$dw_link."' where orderId='".$lastOrderId."'";
        mysqli_query($dbLink,$sqlQuery);

        // Dropbox ends//
        header("location: thankyou.php?ordId=".$lastOrderId.'&categoryId='.$_REQUEST['categoryId']);

正如您所看到的,我们使用createTemporaryDirectLink方法,该方法会导致获取超时过期的临时链接。

我们的供应商通常每两天检查一次这些文件 - 因此这是一个不可用的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用createTemporaryDirectLink方法:

,而不是使用createShareableLink方法

https://dropbox.github.io/dropbox-sdk-php/api-docs/v1.1.x/class-Dropbox.Client.html#_createShareableLink

这将为您提供一个不会过期的共享链接。有几点需要注意:

  • 可以撤销这些链接。
  • 该链接将显示在用户的https://www.dropbox.com/links页面上。
  • 默认情况下,这些链接指向预览页面,而不是文件内容本身。

最后一点可以如下所示解决:

https://www.dropbox.com/help/201