如何从 laravel 的网络浏览器访问上传的文件?

Posted

技术标签:

【中文标题】如何从 laravel 的网络浏览器访问上传的文件?【英文标题】:how to access uploaded file from web-browser in laravel? 【发布时间】:2021-08-21 14:08:55 【问题描述】:

这就是我将文件上传到 laravel 项目中所做的工作。

if($request->file()) 
     $fileName = time().'_'.$request->file('imageFile')->getClientOriginalName();
     $filePath = $request->file('imageFile')->storeAs('products', $fileName, 'public');
     $product->featured_image = '/storage/' . $filePath;
 

公共磁盘

'public' => [
      'driver' => 'local',
      'root' => storage_path('app/public'),
      'url' => env('APP_URL').'/storage',
      'visibility' => 'public',
 ],

文件上传到 app/public/products 内的存储文件夹中,但是当我尝试检索显示 404 错误的文件时。即使我已经创建了与公用文件夹的符号链接,但无法正常工作。 我不知道为什么,但文件没有显示在公用文件夹中。文件仅在存储文件夹中上传项目级别或私有文件夹。如何通过网络浏览器访问该文件。

【问题讨论】:

【参考方案1】:

首先你已经创建了符号链接

php aritsan storage:link

这将在公共文件夹中创建快捷方式存储文件夹

这样你就可以访问网址

asset('storage/products/filename')

在您的情况下,您需要在存储时更改路径

  $product->featured_image =  $fileName;

所以在访问时

 asset('storage/products/'.$product->featured_image )

参考:https://laravel.com/docs/8.x/filesystem#the-public-disk

【讨论】:

我已经完成了你从一开始提到的所有事情,但在创建符号链接后创建的公用文件夹存储文件夹中没有工作,但文件没有上传到公用文件夹中。所有文件都在项目存储文件夹中上传。据我所知,这是无法通过网络浏览器访问的 是的文件上传到存储文件夹并自动链接到公共文件夹。显示代码如何显示 $filePath = $request->file('imageFile')->move(public_path('storage/products'), $fileName);我只是将文件移动到公共目录中,这是我做的正确的事情。现在我可以从网络浏览器中看到它 你如何显示图像 保持你的代码与 answer.its 正确.dont change 相同【参考方案2】:

根据文档 - “要使这些文件可以从 Web 访问,您应该创建一个从 public/storage 到 storage/app/public 的符号链接”

php artisan storage:link

https://laravel.com/docs/8.x/filesystem

【讨论】:

以上是关于如何从 laravel 的网络浏览器访问上传的文件?的主要内容,如果未能解决你的问题,请参考以下文章

将大文件上传到服务器时,OAuth 访问令牌已过期

如何从 Laravel Livewire 的属性中删除上传的文件?

如何将laravel项目从本地部署到服务器

使用带有接受图像的文件输入来访问笔记本电脑上的网络摄像头

将 5gb 文件从 Web 浏览器上传到 Blob 存储

如何在子域上上传 laravel 项目?