在响应中动态分配文件名
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
在我使用 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