使用PHP将Dropbox文件内容存储到变量中

时间:2016-01-19 21:38:15

标签: php dropbox-api

我需要你的帮助,因为我被困住了,谷歌没有提供任何解决方案。我正在尝试通过官方Dropbox API读取.txt文件的内容。它到目前为止工作但它在我眼中并不漂亮。必须有一种简单的方法将文件内容直接存储到数组/字符串变量中。

到目前为止,我在网络服务器上找到了一个临时文件的解决方法:

$tempFile = fopen("tempOnWebserver.txt", "w+");
$fileMetadata = $dbxClient->getFile("/someFileOnDropbox.txt", $tempFile);
fclose($tempFile);
$fileContent = file_get_contents("tempOnWebserver.txt");

所以我只想写$dbxClient->getFile("/someFileOnDropbox.txt", $fileContent)并跳过解决方法,但那是 - 当然 - 不可能(:有什么办法可以解决这个问题吗?

对于Dropbox getFile函数,请参阅http://dropbox.github.io/dropbox-sdk-php/api-docs/v1.1.x/class-Dropbox.Client.html#_getFile

1 个答案:

答案 0 :(得分:1)

您可以在不使用php://memory stream

实际写入文件的情况下执行此操作
$stream = fopen('php://memory', 'r+');
$dbxClient->getFile("/someFileOnDropbox.txt", $stream);
rewind($stream);
$fileContents = stream_get_contents($stream);

这并不能简化你的程序,但至少可以在你的服务器上不写任何实际文件的情况下完成。

您还可以扩展Dropbox Client类以封装此功能:

class YourClient extends \Dropbox\Client
{
    public function getFileContents($filename)
    {
        $stream = fopen('php://memory', 'r+');
        $this->getFile("/someFileOnDropbox.txt", $stream);
        rewind($stream);
        $fileContents = stream_get_contents($stream);
        fclose($stream);
        return $fileContents;
    }
}