在laravel中,我有一个页面,我试图提供到文件的下载链接,我正在使用laravel文件管理器上传这些文件。
这些文件的路径设置在
lfm.php
配置文件为:
/*
|--------------------------------------------------------------------------
| Working Directory
|--------------------------------------------------------------------------
*/
// Which folder to store files in project, fill in 'public', 'resources', 'storage' and so on.
// You should create routes to serve images if it is not set to public.
'base_directory' => 'public',
'images_folder_name' => 'assets/uploads/images',
'files_folder_name' => 'storage/files',
'shared_folder_name' => 'shares',
'thumb_folder_name' => 'thumbs',
我关注了laravel网站上关于
public
和
storage
包含以下内容的文件夹:
公共磁盘用于将要公开的文件
可接近的。默认情况下,公共磁盘使用本地驱动程序和
将这些文件存储在
存储/应用程序/公共
. 使他们容易接近
从网上,你应该
创建符号链接
从
公共/存储
到
存储/应用程序/公共
.
本会议将使您的
一个目录中的文件,可以轻松地跨部署共享
当使用像特使这样的零停机时间部署系统时。
要创建符号链接,可以使用“存储:链接Artisan”
命令:
php Artisan存储:链接
在此之前,我还设置了以下内容:
-
在我的
.env
我已将应用程序URL更改为:
http://127.0.0.1:8000
在哪
php artisan server
启动本地服务器。
-
在
filesystems.php
我将public数组更改为:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
然后我创建了符号链接。
在我的公共目录中,我得到了以下信息:
这是一个链接
storage/app/public
然后我上传了一个文件到
shares
所以在我的
存储
我现在拥有的文件夹:
app/public/shares/name-of-file
为了测试这个,我有以下控制器和视图:
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class TemplateController extends Controller
{
public function index()
{
$files = Storage::allFiles('files/shares');
return view('pages.templates-and-tools.index', compact('files'));
}
}
考虑相关部分
<table id="templates" class=" table-striped table-vaccancies table-responsive">
<thead>
<tr>
<th class="col-md-1 col-xs-1">Type</th>
<th class="col-md-6 col-xs-6">Name</th>
<th class="col-md-2 col-xs-2">Category</th>
<th class="col-md-2 col-xs-2">Modified</th>
<th class="col-md-1 col-xs-1">Size</th>
</tr>
<tr class="warning no-result">
<td colspan="5">
<i class="fa fa-warning"></i>
<h3 class="text-center"> No result</h3>
</td>
</tr>
</thead>
<tbody>
@foreach ($files as $file)
@php
$date = Storage::lastModified($file); $date = gmdate("d/m/Y - H:i", $date);
$size = Storage::size($file); $size = ceil ($size/1000);
$url = Storage::url($file);
$fileName = pathinfo($file)['filename'];
$Category = pathinfo($file)['dirname'];
$type = pathinfo($file)['extension'];
$Category = basename(dirname( $file))
@endphp
<tr>
<td>{{$type}}</td>
<td>
<a href="{{ Storage::download($url) }} ">{{$fileName }}</a>
</td>
<td>{{$Category}}</td>
<td> {{$date}}</td>
<td>{{$size}}kb</td>
</tr>
@endforeach
</tbody>
</table>
上面抓取了下面存储文件夹中的所有内容
files/shares
,然后我只需在每个表单元格中吐出一堆关于文件的信息。
我面临的问题是这样一句话:
<a href="{{ Storage::download($url) }}">{{$fileName }}</a>
它返回以下错误:
File not found at path: http:/127.0.0.1:8000/storage/files/shares/Hummingbird_Technologies_ES.pdf (View: C:\xampp\htdocs\my-newable\resources\views\pages\templates-and-tools\index.blade.php)
这是一个非常直接的错误,但是…
您可以看到该文件存在。
那么,我做错什么了?