可以从Dropbox API V2带有PHP的MP3/MP4



昨天我设置了它,以便使用https://github.com/spatie/dropbox-api和laravel使用存储在Dropbox中的mp3文件。但是,这仅适用于小文件,就像现在的工作方式一样,它必须先加载整个文件,然后从Laravel提供。这对电影或长途曲目根本不起作用,因为它永远占据并耗尽记忆。

这是我目前正在使用的代码

    $authorizationToken = 'my-api-token';
    $client = new SpatieDropboxClient($authorizationToken);
    $path = "/offline/a-very-long-song.mp3"; // path in dropbox
    $stream = $client->download($path);
    $file = stream_get_contents($stream);
    fclose($stream);
    unset($stream);
    $file_info = new finfo(FILEINFO_MIME_TYPE);
    return response($file, 200)->withHeaders([
        'Content-Type' => $file_info->buffer($file),
        'Content-Disposition' => 'inline; filename="' . basename($path) . '"',
    ]);

我想知道是否有一种流式传输的方法,因此它不必先加载整个文件。我想这是当您将媒体文件加载到浏览器中时自然会发生,但是由于没有与Dropbox的物理文件的直接链接,因此我不确定是否可能。

Dropbox API确实提供了可以通过/2/files/get_temporary_link端点检索可用于流式文件的临时直接链接的能力:

https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link

在您使用的库中,似乎可作为getTemporaryLink方法可用,如下所示:

https://github.com/spatie/dropbox-api#a-minimal-implementation-of-dropbox-api-v2

最新更新