用于存储文件的 Laravel 公共 URL

2022-08-30 20:25:03

我想检索使用

storage::p utFile('public/spares');

所以,这就是我使用的问题

存储::文件('公共/备件');

但它从 laravel 存储目录中提供此输出

public/spares/image1.jpg
public/spares/image2.jpg
public/spares/image3.jpg

我如何获得上述内容的公共链接

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'));

这是正确的吗


答案 1

首先,您必须创建从目录到目录的符号链接,以便您可以访问文件。您可以使用以下命令执行此操作:public/storagestorage/app/public

php artisan storage:link

因此,您可以使用以下命令存储文档:

Storage::putFile('spares', $file);

并通过以下方式将它们作为资产进行访问:

asset('storage/spares/filename.ext');

查看公用磁盘上的文档


答案 2

怎么样?它甚至适用于本地存储。Storage::url

你可以在这里找到更多: https://laravel.com/docs/5.4/filesystem#file-urls

如果要从目录中返回所有文件的 url,可以执行如下操作:

return collect(Storage::files($directory))->map(function($file) {
    return Storage::url($file);
})

如果你正在寻找一种非立面的方式,不要忘记注入而不是立面。\Illuminate\Filesystem\FilesystemManagerStorage

编辑:

有2种(或更多)方法可以处理修改日期:

将文件传递到视图。

|ou可以直接将您传递到视图,然后在您的模板中使用以下内容: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 collect(Storage::files($directory))->map(function($file) {
     return [
         'file' => Storage::url($file),
         'modified' => $file->lastModified // or something like this
     ]
})->toArray()

推荐