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

标签 php laravel laravel-5

在我的 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/

相关文章:

php - 尝试/捕获不适用于 Laravel 5.4

php - 使用自动对焦打开模态弹出窗口

java - Java Triple DES 加密/解密的 PHP 等价物

laravel - Eloquent 模型返回 0 作为主键

php - 用户 'homestead' @'localhost' 的访问被拒绝(使用密码 : YES)

mysql - Laravel 迁移(错误号 : 150 "Foreign key constraint is incorrectly formed")

javascript - 如何在html输入中获取jquery数组

javascript - 如何拉出段落元素中的文本?

php - Laravel - belongsToMany 高效标签计数?

php - Laravel Sanctum Auth 问题