【问题标题】:Laravel 5: Dynamically Generate Links (Routes) to Uploaded FilesLaravel 5:动态生成上传文件的链接(路由)
【发布时间】:2016-08-25 22:28:51
【问题描述】:

我有一个简单的表单,用户可以在其中上传文件。文件上传到 public/uploads 目录。

表格下方是public/uploads 目录中所有文件的列表。

所以,这是我的控制器方法:

public function store(Request $request)
{
    if ($request->hasFile('file_upload')) {
        if ($request->file('file_upload')->isValid()) {
            $request->file('file_upload')->move(public_path().'/uploads/', $request->file('file_upload')->getClientOriginalName());
        }
    }

    $list_of_files = \File::allFiles(public_path().'/uploads/');

    return view('foo', compact('list_of_files'));
}

这里是显示文件列表的视图文件:

<ul>
    @foreach($list_of_files as $file)
        <li><a href="#">{{ basename($file) }}</a></li>
    @endforeach
</ul>

我应该在 href=" " 中添加什么来获得指向这些文件的链接(以及我需要哪些路径才能使这些链接起作用)?

【问题讨论】:

  • 不是解决方案或您正在寻找的内容,而是使用它来命名文件并避免其他未来的麻烦 date('YmdH:i:s')。"-".$image->getClientOriginalName( );

标签: php laravel laravel-5 laravel-routing


【解决方案1】:

您可以使用 asset() 帮助程序生成公共目录的 URL。

假设您将文件存储在uploads 目录中。你会像这样使用它&lt;li&gt;&lt;a href="{{ asset('uploads/' . basename($file)) }}"&gt;{{ basename($file) }}&lt;/a&gt;&lt;/li&gt;

您只需要确保basename($file) 是文件的名称,这样当他们点击链接时,它实际上会将他们带到文件中。

全文:

<ul>
    @foreach($list_of_files as $file)
        <li><a href="{{ asset('uploads/' . basename($file)) }}">{{ basename($file) }}</a></li>
    @endforeach
</ul>

【讨论】:

  • 谢谢,我还有一个关于路线的 noob 问题:现在我有了指向文件的链接,当我点击某个链接时(例如打开一些 .pdf文档)我将拥有以下 URL:localhost/uploads/invoice_sale.pdf。我没有在 routes.php 中定义任何与此类 URL 匹配的内容(uploads/some_file_name)。我想如果我们想让这样的链接工作 - 我们需要在 routes.php 中定义它们吗?我的意思是,我网站上的每个 URL 都必须在 routes.php 中定义才能正常工作,对吗?对不起我的英语不好。
  • 如果该目录在您的公用文件夹中,那么您可以直接导航到它 - 与使用 css 文件或 JavaScript 文件的方式相同。如果该目录在您的公用文件夹之外,那么您将需要设置一个路由和函数来处理文件的查看或下载
  • @PeraMika 例如,如果您将文件 invoice.pdf 存储在 public/uploads/invoice.pdf 中,那么您可以使用 example.com/uploads/invoice.pdf 直接在浏览器中导航到该文件,而无需必须为它定义一个特定的路线。这有意义吗?
【解决方案2】:
href="/public/{{ basename($file) }}"

应该让链接不受限制地工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2015-11-07
    • 2015-04-10
    • 2016-06-08
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多