gpt4 book ai didi

php - 在 Laravel 中管理上传的文件 - 链接公共(public)目录和存储目录

转载 作者:可可西里 更新时间:2023-11-01 00:42:21 24 4
gpt4 key购买 nike

在我的 Laravel 5.1 应用程序中,我将图像存储在 storage/app/uploads 文件夹中。

我的 local磁盘:

<?php

'disks' => [

'local' => [
'driver' => 'local',
'root' => storage_path('app/uploads'),
],
// other configuration...

?>

问题是,上传后我无法找到使用图像文件的方法,例如作为<img>的来源标签。基本上,我需要检索图像的有效路径,以便在页面上使用它。

对于部署,我正在使用提供解决方案的 Envoyer。根据Envoyer docs :

When storing user uploaded files, you should store them in the storage directory of your application if you are using Laravel. Then, you may use the "Manage Linked Folders" feature of Envoyer to create a symbolic link from your public directory to the storage directory. The "Manage Linked Folders" button can be found on the "Deployment Hooks" tab of your project.

..这很清楚。

但是如何在本地开发环境中“链接”storagepublic 文件夹? Laravel 是否提供了一种方法,或者我是否需要在我的环境中手动创建一个符号链接(symbolic link)?

最佳答案

有几个选项:

  1. 创建一个输出文件的 Controller

    class AssetController {
    public function show($id) {
    $file = File::findOrFail($id);
    return Response::make(Storage::get($file->storage_key), 200, ['Content-Type' => $file->mime_type]);
    }
    }
  2. 创建符号链接(symbolic link) public/assets => storage/app/

  3. 上传文件到public/assets而不是storage/app

  4. 在您的网络服务器上使用重写来提供您的 storage/app 文件夹中的文件 - 如何执行此操作取决于您使用的网络服务器。对于 nginx 你可以使用类似的东西

    rewrite ^/v1/assets/(\d+) /../storage/app/$1;

关于php - 在 Laravel 中管理上传的文件 - 链接公共(public)目录和存储目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com