如何在激活下载之前在laravel中设置标题

时间:2017-09-14 12:47:00

标签: php laravel

我想在开始下载之前设置标题。

之前我曾经在普通的PHP中做过类似的事情:

      header('Content-Description: File Transfer');
      header('Content-Type: application/pdf');
      header('Content-Disposition: attachment; filename="'.basename($path).'"');
      header('Expires: 0');
      header('Cache-Control: must-revalidate');
      header('Pragma: public');
      header('Content-Length: ' . filesize($path));
      readfile($path);

现在我仍然希望能够设置相同的标题并调用laravel下载功能并传递我的标题,例如:

return response()->download($pathToFile, $name, $headers);

其中$ headers变量应该包含我的标题' s。任何曾经做过这件事的人。

3 个答案:

答案 0 :(得分:2)

来自docs

您可以使用header方法向响应添加一系列标头,然后再将其发送回用户:

return response($content)
            ->header('Content-Type', $type)
            ->header('X-Header-One', 'Header Value')
            ->header('X-Header-Two', 'Header Value');

或者,您可以使用withHeaders方法指定要添加到响应中的标头数组:

return response($content)
            ->withHeaders([
                'Content-Type' => $type,
                'X-Header-One' => 'Header Value',
                'X-Header-Two' => 'Header Value',
            ]);

答案 1 :(得分:1)

这很简单

$headers =[
        'Content-Description' => 'File Transfer',
        'Content-Type' => 'application/pdf',
    ];

return \Response::download($pathToFile, $name,$headers);

答案 2 :(得分:1)

将标题附加到回复

请记住,大多数响应方法都是可链接的,允许流畅构建响应实例。例如,您可以使用header方法向响应添加一系列标头,然后再将其发送回用户:

return response($content)
            ->header('Content-Type', $type)
            ->header('X-Header-One', 'Header Value')
            ->header('X-Header-Two', 'Header Value');

或者,您可以使用withHeaders方法指定要添加到响应中的标头数组:

return response($content)
            ->withHeaders([
                'Content-Type' => $type,
                'X-Header-One' => 'Header Value',
                'X-Header-Two' => 'Header Value',
            ]);

点击此链接可以帮助您 https://laravel.com/docs/5.4/responses#attaching-headers-to-responses