📜  laravel 从公共文件夹下载文件 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:46.657000             🧑  作者: Mango

Laravel 从公共文件夹下载文件

在 Laravel 中,我们可以使用 response() 函数返回文件内容并指定文件类型,从而实现从公共文件夹下载文件的功能。

步骤
1. 将文件放置于公共文件夹中

首先,我们需要将要下载的文件放到 Laravel 应用的公共文件夹中,这样才能保证文件能够被访问到。

默认情况下,Laravel 的公共文件夹是 public 文件夹,该文件夹中的文件都可以通过浏览器来访问。

2. 编写路由

接下来,我们需要创建一个路由来处理下载请求。在 Laravel 中,我们可以在 routes/web.php 文件中定义路由。例如,我们可以定义一个路由来下载名为 example.txt 的文件:

Route::get('/download', function () {
    $pathToFile = public_path('example.txt');
    return response()->download($pathToFile);
});

上面的代码中,我们使用 public_path() 函数来获取文件在公共文件夹中的路径,并将其传递给 response()->download() 函数。response() 函数用于创建一个下载响应,并设置响应的头信息,告诉浏览器这是一个要下载的文件。

3. 测试下载功能

现在,我们可以通过浏览器访问 http://localhost/download,将会开始下载名为 example.txt 的文件。

其它选项

上面的例子是最简单的从公共文件夹下载文件的方法,但 response() 函数还提供了一系列选项,用于控制文件下载的行为,例如:

  • 指定下载文件的名称:
return response()->download($pathToFile, 'custom-name.txt');
  • 指定响应的 HTTP 状态码:
return response()->download($pathToFile)->setStatusCode(200);
  • 通过修改响应头信息来控制浏览器的下载行为:
return response()->download($pathToFile)->header('Content-Type', $type);
  • 控制下载速度:
return response()->download($pathToFile)->deleteFileAfterSend(true)->setMaxAge(3600);

等等。

具体选项可以查看 Laravel 文档

结语

在本文中,我们学习了如何在 Laravel 中从公共文件夹下载文件。通过 response() 函数,我们可以方便地创建下载响应,并对下载行为进行控制。