如何使View响应可下载?

时间:2017-06-12 13:02:03

标签: php laravel laravel-5

我有一个从模板渲染的XML文件。

代码:

public function createXml($id)
{
    $order = Order::with('orderLines.bike.gallery')->with('orderLines.product')->with('orderLines.accu')->find($id);
    $debtor = User::find($order->user_id);

    return response()->view('ordersxml.order-template',compact('order','debtor'))->header('Content-Type','text/xml');
}

我希望人们自动下载.xml文件。我该怎么做呢?我需要保存才能使用吗?就像现在一样,它只返回视图。

2 个答案:

答案 0 :(得分:1)

在将响应发送给用户之前设置此标头,然后重试:

Content-disposition: attachment; filename="yourfilename.xml"

此标头将强制浏览器下载您的xml。 祝你好运。

答案 1 :(得分:1)

而不是

return response()->view('ordersxml.order-template',compact('order','debtor'))->header('Content-Type','text/xml');

尝试:

return response()->download($pathToFile);

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

return response()->download($pathToFile)->deleteFileAfterSend(true);

是的,您需要保存它才能正常工作,因为上述功能需要路径。

Reference