laravel下载一个新创建的xmlfile

时间:2013-10-09 13:03:13

标签: xml laravel laravel-4 simplexml

我正在尝试创建xmlfile并从我的程序中下载它但它运行得不是很好。

这是我的代码:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><mydoc></mydoc>');

    $xml->addAttribute('version', '1.0');
    $xml->addChild('datetime', date('Y-m-d H:i:s'));

    $person = $xml->addChild('person');
    $person->addChild('firstname', 'Someone');
    $person->addChild('secondname', 'Something');
    $person->addChild('telephone', '123456789');
    $person->addChild('email', 'me@something.com');

    $address = $person->addchild('address');
    $address->addchild('homeaddress', 'Andersgatan 2, 432 10 Göteborg');
    $address->addChild('workaddress', 'Andersgatan 3, 432 10 Göteborg');

    $xml->saveXML('test.xml');

    $response = Response::make($xml->asXML(), 200);
    $response->header('Content-Type', 'text/xml');

    return $response;

这是在我的浏览器中显示xmlfile,但我想要一个弹出窗口,要求我下载我刚刚创建的文件。我尝试使用Response :: download(),但这不起作用,因为第一个参数应该是文件的路径。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:8)

我认为您可能需要添加更多标题:

$response->header('Cache-Control', 'public');
$response->header('Content-Description', 'File Transfer');
$response->header('Content-Disposition', 'attachment; filename=test.xml');
$response->header('Content-Transfer-Encoding', 'binary');
$response->header('Content-Type', 'text/xml');