Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未找到Laravel 5.4存储文件_Php_Laravel_Laravel 5.3 - Fatal编程技术网

Php 未找到Laravel 5.4存储文件

Php 未找到Laravel 5.4存储文件,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我使用的是laravel 5.4。我在storage/app/public/documents文件夹中上传了一些文档文件,比如 $request->paper_file->store('documents'); 我的文件上传成功 在文件系统中,默认存储是公共的 公共配置就像 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_UR

我使用的是laravel 5.4。我在storage/app/public/documents文件夹中上传了一些文档文件,比如

$request->paper_file->store('documents');

我的文件上传成功

在文件系统中,默认存储是公共的 公共配置就像

'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
但当我点击/storage/documents/hqlgiginvh8bmrrpvdz9afgbhlmc7g7bhzsx4u.pdf时
上面说找不到404。如何解决此问题。

默认情况下,Laravel将文件放在
存储/app/public
目录中,该目录无法从外部web访问。因此,您必须在该目录和公共目录之间创建一个符号链接:

storage/app/public->public/storage

您可以通过执行laravel^5.8中的
php artisan storage:link
命令()。

  • 确保使用
    public/storage
    运行命令
    php-artisan-storage:link
    以链接
    storage/app/public
现在:

//此返回类似于“public/documents/file.ext”的内容
$path=$request->paper_file->store('public/documents');
//此返回类似“storage/documents/file.ext”的内容
$publicPath=\Storage::url($path));
//这会返回类似“/storage/documents/file.ext”的值
$url=资产($publicPath);

运行
php artisan storage:link
后,它会在公用文件夹中创建一个符号链接,您可以像这样检索记录
。您应该包括
公共
目录

此问题发生在我将项目移动到其他文件夹后。 如果已生成存储链接,请尝试删除公用/存储文件夹,然后再次运行:

php artisan storage:link

使用Laravel的存储功能上载图像时,图像存储在存储文件夹中。 例如: 存储/app/public/avatars/file1.png

但当您想通过URL访问它时,您应该像这样访问它:

存储/avatars/file1.png


使用Laravel 7.x,它对我很有效。

如果您来自Laravel 8.x,并且确实运行了命令
php artisan storage:link
(创建符号链接),但是您的代码不起作用,即您尝试加载的文件没有显示,那么您就像我一样

刚才提到,此解决方案对我的laravel 8x项目很有帮助。我没有使用asset helper功能从我的刀片文件中添加“存储”路径名,因此我的图像路径没有输出任何内容,而是在我键入类似于so
asset('storage/uploads/pic1.png)
路径名时输出的


我想这可能会对某些人有所帮助。

您看到文件系统中的文件了吗?文档显示它正在被使用,如
$request->file('paper')->store('documents')
,但我不确定您的
paper\u文件
位是什么。我的文件上载成功。文件名为paper_file.Where is
hqlgigenvvh8bmrrrpvdz9afgbhlmc7g7bhzsx4u
来自何处?这是laravel生成的动态文件名。你能添加处理上传过程的方法吗?执行此命令时,我出现了错误,如“public/storage”目录已经存在。
我只是在重新执行命令之前删除了public/storage中的空存储文件夹。删除public/storage是关键
php artisan storage:link