我有一些看起来像这样的 csv 数据:
$data = 'email,score
[email protected],3
[email protected],4';
当我尝试将此 csv 导出到这样的文件时:
$response = new StreamedResponse();
$response->setCallback(
static function () use ($data): void {
$fp = fopen('php://output', 'wb');
file_put_contents('exportk.csv', $data);
fclose($fp);
}
);
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
我得到一个空文件,我在这里做错了什么
来自 Symfony 文档:
https://symfony.com/doc/current/components/http_foundation.html#request
如果您只是在同一请求期间创建了该文件,则该文件可能会在没有任何内容的情况下发送。这可能是由于缓存的文件统计信息对于文件大小返回零。要解决此问题,请使用二进制文件的路径调用 clearstatcache(true, $file)。
如果这不能解决问题,请尝试以下操作:
use Symfony\Component\HttpFoundation\HeaderUtils;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
$data = <<<END
email,score
[email protected],3
[email protected],4
END;
// Just write the file here to save to the file system if you want...
$response = new Response($data);
$disposition = HeaderUtils::makeDisposition(
HeaderUtils::DISPOSITION_ATTACHMENT,
'export.csv'
);
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers->set('Content-Disposition', $disposition);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句