Laravel存储文件的公共URL

8zzbczxx  于 2022-11-18  发布在  其他
关注(0)|答案(5)|浏览(267)

我想检索所有使用
存储::putFile(“公共/备用”);
所以,这就是我在
存储::文件(“公共/备用”);
但它从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'));

这是不是对

uemypmqf

uemypmqf1#

首先你必须创建从public/storage目录到storage/app/public目录的符号链接,这样你就可以访问这些文件了。

php artisan storage:link

因此,您可以使用以下方式存储文档:

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

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

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

查看公共磁盘上的文档

8ehkhllq

8ehkhllq2#

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\FilesystemManager而不是Storage外观。
编辑:
处理修改日期的方法有两种(或多种):

将文件传递到视图。

|您可以将您的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()
m4pnthwp

m4pnthwp3#

我知道这个问题是相当古老的,但我把这个答案为任何人仍然有这个问题从laravel 5. 5 +
要解决这个问题,请按如下方式添加“url”键,更新文件系统的配置:

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

希望对你有帮助:)

8yparm6h

8yparm6h4#

我找到了解决方案,而不是搜索存储

$docs = Storage:files('public/spares');

我们可以搜索符号链接

$docs = File:files('storage/spares');

然后通过asset()函数运行它以获得公共URL。

bxpogfeg

bxpogfeg5#

$file = Storage::disk('public')->put($folder, request()->file($key), 'public');
$file = Storage::url($file);

相关问题