【问题标题】:Upload to Dropbox not working from Laravel with Dropbox driver使用 Dropbox 驱动程序无法从 Laravel 上传到 Dropbox
【发布时间】:2021-02-15 17:54:43
【问题描述】:

我正在尝试使用 Laravel 8 中的 Dropbox 驱动程序将(DomPDF 生成的)PDF 文件上传到 Dropbox。我已经安装了 spatie/flysystem-dropbox 并创建了一个包含以下内容的 DropboxServiceProvider.php:

<?php

namespace App\Providers;

use Storage;
use Illuminate\Support\ServiceProvider;

use League\Flysystem\Filesystem;
use Spatie\Dropbox\Client;
use Spatie\FlysystemDropbox\DropboxAdapter;

class DropboxServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Storage::extend('dropbox', function ($app, $config) {
            $client = new Client([$config['key'], $config['secret']]);
            return new Filesystem(new DropboxAdapter($client));
        });
    }

    public function register()
    {
        //
    }
}

服务提供者也被添加到我的配置/应用提供者中:

'providers' => [
    ...
    App\Providers\DropboxServiceProvider::class,
    ...
]

在我的配置/文件系统中,我添加了保管箱驱动程序(保管箱应用程序密钥和机密也在 .env 文件中设置):

        'dropbox' => [
            'driver' => 'dropbox',
            'key' => env('DROPBOX_APP_KEY'),
            'secret' => env('DROPBOX_APP_SECRET'),
        ]

现在,当我尝试运行以下代码时,它返回 false,并且该文件没有出现在我的 Dropbox 中。当我将磁盘更改为“本地”时,文件会上传到我的本地存储。

    $path = "pdf/file.pdf";
    $storage_path = Storage::path($path);
    $contents = file_get_contents($storage_path);
    $upload = Storage::disk('dropbox')->put($path, $contents);
    return $upload;

我已经尝试通过运行php artisan config:clear 来清除我的配置。在尝试了许多不同的事情之后,我不知道我做错了什么,所以任何建议都将不胜感激!

【问题讨论】:

  • 它说它应该使用授权令牌而不是 API 密钥和秘密
  • 我也试过了,结果一样。

标签: laravel filesystems dropbox dropbox-api


【解决方案1】:

问题不在于代码,而在于我的 Dropbox 应用中的权限:尚未启用 files.content.write。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2021-09-03
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多