首页 > 解决方案 > 可以使用blade.php 打开本地文件并显示内容吗?拉拉维尔

问题描述

目前我有一个带有laravel 5.5的项目我有一些文本文件存储在storage/public/* 我一直在考虑是否有办法使用laravel的刀片并直接打开所选文件而不是向后端发出请求以检索内容然后显示。

想法是里面*.blade.php会有一个按钮可以点击,那么我们可以直接打开文本文件然后显示内容而不是向后端发出请求吗?

比方说,我确实有类似的 html 代码

<input type='hidden' value='filePath' name=path>
<a href="">text file name</a>

单击锚点时,通常会向后端发出请求,打开文件,获取内容,然后将其传递回前端。但我在想的是,由于前端知道路径在哪里,文件的名称。可以在前端做吗?这样,也不需要更快地完成任何请求。

但我什至不知道如何启动它。

有人有什么建议吗?

提前感谢您的帮助。

标签: phplaravelfilelaravel-5request

解决方案


假设查看网页的人可以访问您的文件,您可以使用文件 URL(或者只是在刀片文件中输入 URL?)。

<a href="http://public/fixed/path/to/file">Title</a>

或者,如果文件是在生成刀片文件时预先确定的,则在您的控制器中执行以下操作:

use Illuminate\Support\Facades\Storage;

public function index()
{
    return view('view.name', [
        'url' => Storage::url('file.jpg')
    ]);
}

在你的 Blade 文件中:

<a href="{{ $url }}">Title</a>

如果您将刀片文件视为前端,请记住,一旦用户查看它,它就不会托管在服务器上。您需要执行上述操作以允许刀片生成正确的文件 URL(除非您只是在谈论静态的托管文件)

但是,如果您对后端和前端的引用是关于逻辑应该去哪里,那么答案就是“后端”。MVC 模式的重点是将正确的逻辑位放在正确的位置,因此 Blade 文件(在 MVC 中表示 V 代表 View)应该只关注呈现,而不是挖掘文件和生成 URL。


推荐阅读