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

Storing Dropbox file content into variable with PHP

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

到目前为止我得到的是在网络服务器上使用临时文件的解决方法:

$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

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

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

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


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

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