在响应中动态分配文件名

Assign filename dynamically in a response

在我使用 Laravel 8 创建的 Web 应用程序中,我需要下载一个 .xml 文件,并且文件名必须根据标题动态创建。 这是因为文件名是按照特定规则组成的,必须包括今天的日期。

$filename = 'FirstPart_'.date("Y-m-d").'_000.xml'

到目前为止,为了测试响应和下载,我已经为文件指定了一个固定名称,如下所示,并且下载正确执行。

        $response = Response::create($xml, 200);
        $response->header('Content-Type', 'text/xml');
        $response->header('Cache-Control', 'public');
        $response->header('Content-Description', 'File Transfer');
        $response->header('Content-Disposition', 'attachment; filename="TestXMLDownload.xml"');
        $response->header('Content-Transfer-Encoding', 'binary');
        return $response;

但是当我尝试使用自定义文件名下载文件时,下载失败。

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

我感谢任何建议或建议

您可以试试这个代码。 PHP 通过特定的单引号接受动态文件名。我在这里更改了引号的格式。

$response->header('Content-Disposition', 'attachment; filename="' . $filename . '"');

您的代码在这一行中有错误,在这种情况下,“$filename”附加在您的 header 不是动态文件名值中。

$response->header('Content-Disposition', 'attachment; filename="".$filename.""');

试试这个解决方案:

$filename = "TestXMLDownload.xml";

$response = Response::create($xml, 200);
$response->header('Content-Type', 'text/xml');
$response->header('Cache-Control', 'public');
$response->header('Content-Description', 'File Transfer');

//change that line in your code

$response->header('Content-Disposition', 'attachment; filename=' . '"' . $filename . '"');

$response->header('Content-Transfer-Encoding', 'binary');

return $response;

在通过 tp $response->header.

的文件名中附加 $filename