Laravel Public url 存储文件
Laravel Public url for storage files
我想为使用
存储的所有文件检索 public url
storage::putFile('public/spares');
所以,这就是我正在使用的问题
storage::files('public/spares');
但它从 laravel 存储目录
提供此输出
public/spares/image1.jpg
public/spares/image2.jpg
public/spares/image3.jpg
如何获得上述
的 public link
http://localhost/laravel/public/storage/spares/image1.jpg
http://localhost/laravel/public/storage/spares/image2.jpg
http://localhost/laravel/public/storage/spares/image3.jpg
**编辑**
正在发送文件的最后修改数据以供查看
$docs = File::files('storage/document');
$lastmodified = [];
foreach ($docs as $key => $value) {
$docs[$key] = asset($value);
$lastmodified[$key] = File::lastmodified($value);
}
return view('stock.document',compact('docs','lastmodified'));
这是正确的吗
好吧,我找到了解决方案,而不是搜索存储
$docs = Storage:files('public/spares');
我们可以搜索符号link
$docs = File:files('storage/spares');
然后运行它通过asset()
函数得到publicURL。有更好的解决方案吗?
Storage::url
呢?它甚至适用于本地存储。
您可以在这里找到更多信息:https://laravel.com/docs/5.4/filesystem#file-urls
如果你想 return 目录中所有文件的 url,你可以这样做:
return collect(Storage::files($directory))->map(function($file) {
return Storage::url($file);
})
如果您正在寻找非外观方式,请不要忘记注入 \Illuminate\Filesystem\FilesystemManager
而不是 Storage
外观。
编辑:
有 2 种(或更多)处理修改日期的方法:
将文件传递给视图。
|您可以将 Storage::files($directory)
直接传递给视图,然后在您的模板中使用以下内容:
// controller:
return view('view', ['files' => Storage::files($directory)]);
// template:
@foreach($files as $file)
{{ Storage::url($file) }} - {{ $file->lastModified }} // I'm not sure about lastModified property, but you get the point
@endforeach
Return 一个数组:
return collect(Storage::files($directory))->map(function($file) {
return [
'file' => Storage::url($file),
'modified' => $file->lastModified // or something like this
]
})->toArray()
首先,您必须创建从 public/storage
目录到 storage/app/public
目录的符号 link,以便您可以访问这些文件。你可以这样做:
php artisan storage:link
那么您可以将文档存储在:
Storage::putFile('spares', $file);
并将它们作为资产访问:
asset('storage/spares/filename.ext');
我知道这个问题很老了,但我把这个答案给仍然有这个问题的人 laravel 5.5+
要解决此问题,请通过添加 'url' 键来更新文件系统的配置,如下所示:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
希望对您有所帮助:)
我想为使用
存储的所有文件检索 public urlstorage::putFile('public/spares');
所以,这就是我正在使用的问题
storage::files('public/spares');
但它从 laravel 存储目录
提供此输出public/spares/image1.jpg
public/spares/image2.jpg
public/spares/image3.jpg
如何获得上述
的 public linkhttp://localhost/laravel/public/storage/spares/image1.jpg
http://localhost/laravel/public/storage/spares/image2.jpg
http://localhost/laravel/public/storage/spares/image3.jpg
**编辑**
正在发送文件的最后修改数据以供查看
$docs = File::files('storage/document');
$lastmodified = [];
foreach ($docs as $key => $value) {
$docs[$key] = asset($value);
$lastmodified[$key] = File::lastmodified($value);
}
return view('stock.document',compact('docs','lastmodified'));
这是正确的吗
好吧,我找到了解决方案,而不是搜索存储
$docs = Storage:files('public/spares');
我们可以搜索符号link
$docs = File:files('storage/spares');
然后运行它通过asset()
函数得到publicURL。有更好的解决方案吗?
Storage::url
呢?它甚至适用于本地存储。
您可以在这里找到更多信息:https://laravel.com/docs/5.4/filesystem#file-urls
如果你想 return 目录中所有文件的 url,你可以这样做:
return collect(Storage::files($directory))->map(function($file) {
return Storage::url($file);
})
如果您正在寻找非外观方式,请不要忘记注入 \Illuminate\Filesystem\FilesystemManager
而不是 Storage
外观。
编辑:
有 2 种(或更多)处理修改日期的方法:
将文件传递给视图。
|您可以将 Storage::files($directory)
直接传递给视图,然后在您的模板中使用以下内容:
// controller:
return view('view', ['files' => Storage::files($directory)]);
// template:
@foreach($files as $file)
{{ Storage::url($file) }} - {{ $file->lastModified }} // I'm not sure about lastModified property, but you get the point
@endforeach
Return 一个数组:
return collect(Storage::files($directory))->map(function($file) {
return [
'file' => Storage::url($file),
'modified' => $file->lastModified // or something like this
]
})->toArray()
首先,您必须创建从 public/storage
目录到 storage/app/public
目录的符号 link,以便您可以访问这些文件。你可以这样做:
php artisan storage:link
那么您可以将文档存储在:
Storage::putFile('spares', $file);
并将它们作为资产访问:
asset('storage/spares/filename.ext');
我知道这个问题很老了,但我把这个答案给仍然有这个问题的人 laravel 5.5+
要解决此问题,请通过添加 'url' 键来更新文件系统的配置,如下所示:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
希望对您有所帮助:)