linux - 公开上传的文件不显示

标签 linux filesystems laravel-5.7

我在显示公用文件夹中上传的文件时遇到问题。每次尝试从公用文件夹加载文件时,我总是遇到 404 错误。

文件上传的所有测试都顺利通过,文件可以加载,文件存在于数据库和公用文件夹中,符号链接(symbolic link)已创建,但我无法显示公用文件夹中的内容。

代码的主要部分:

上传 Controller .php

$path = $request->file( 'userfile' )->store( 'logos', 'public' );

在此之后的文件夹中:

/storage/app/public/logos/file.ext

在 Blade 模板中使用文件:

<img src="{{ asset( $model->image_path ) }}" />

浏览器的响应 404 - 找不到页面

有关服务器文件夹的更多信息:

/public/storage  - this is the symlink to the public folder 777 permission
/storage/app/public  - the storage public folder 775 permission
/storage/app/public/logos  - the logo folder 755 permission
/storage/app/public/logos/file.ext  - the file 644 permission

我尝试将文件权限更改为 775,但始终是 404

我该如何解决这个问题? 谢谢

[编辑] 我发现与可以看到公共(public)文件的另一台服务器不同。当 ls -l <​​/p> 时,该服务器中的符号链接(symbolic link)具有绿色背景

最佳答案

这个问题的解决方案是在 uploaderController.php 中,当您保存上传文件的路径时,您必须在“storage”文件夹之前添加。

上传 Controller .php

$path = $request->file( 'userfile' )->store( 'logos', 'public' );

$data = [ 'image_path'=>"storage/{$path}" ];
$model->update( $data );

关于linux - 公开上传的文件不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833685/

相关文章:

linux - Shell 脚本使用 Trap 获取 CTRL+Z

linux - Linux/x86 中通用寄存器的使用

Linux 显示详细/技术文件信息

mysql - 更新 Laravel 数据库

javascript - Laravel-5.7 : How to view data in dataset chart in Laravel

c++ - 如何将#defines 从 C++ 共享库导出到应用程序

linux - bash 中 * 与 * 的连接

.net - 我应该如何轮询大量文件以进行更改?

asp.net - CS0016 : Directory invalid error

php - 如何在 Laravel 5.7 中获取 json 值?