在 Storage 文件夹外使用 storeAs 保存文件

Save files with storeAs outside the Storage folder

我在 Laravel 中有一个 API 存储文件

$request->file("file$i")->storeAs('categories', $nameFile)

就目前而言,它将数据正确存储在地址中

/var/www/html/apiapp/storage/app/public/categories

但我想将这些文件保存在文件夹中

/var/archives

因为这些文件将被另一个应用程序访问

将文件保存到网络服务器根目录之外的目录/var/www/html 您应该配置网络服务器。类似问题:

PHP upload a file to a directory outside the webserver root
将 Apache 设置为允许访问不在文档根目录下的目录

你也可以阅读这篇文章: Mapping URLs to Filesystem Locations

storeAs的第三个参数告诉应该将文件保存在哪个存储磁盘上

$path = $request->photo->storeAs('images', 'filename.jpg', 's3');

因此,在 config/filesystem.php 中创建一个新的 磁盘 并将其指向 /var/archives

'disks' => [

    // ...

    'archive' => [
        'driver' => 'local',
        'root' => '/var/archives',
    ],

    // ...

代码中:

$request->file("file$i")->storeAs('categories', $nameFile, 'archive')

确保用户 运行 网络服务器也有权保存到磁盘上的该文件夹。

另一种选择是共享外部存储,例如 AWS S3。此配置遵循相同的想法。

我在葡萄牙语的 Whosebug 上收到了这个 answer,它运行良好