我正在使用PHP Yii框架并尝试下载我的文件。目前,它会下载,但该文件会填充$filePath
位置。为什么不正确填充我的文件?
$getData = // Getting data here.
$fileName = "file.csv";
$filePath = __Dir__ . "/.../exports";
$file = fopen($filePath . '' . $fileName, "w");
fputcsv($file, array_keys($getData[0]));
foreach ($getData as $row){
fputcsv($file, $row);
}
header("Content-Type: text/plain");
header("Content-disposition: attachment; filename = $fileName");
header("Pragma: no-cache");
Yii::app()-> request -> sendFile($fileName, $filePath);
答案 0 :(得分:1)
两件事。一,我认为你错过了/
和$filePath
变量之间的$fileName
。不应该是这样的:
$file = fopen($filePath . '/' . $fileName, "w");
其次,我认为你打电话sendFile()
的方式不正确。第二个参数不应该是文件的路径。相反,它应该是应该发送到浏览器的实际内容。因此,请尝试将该行更改为:
Yii::app()->request->sendFile($fileName, file_get_contents($filePath . '/' . $fileName));
这里,在第二个参数中,我们在$filePath . '/' . $fileName
指定的路径中提供文件的内容。
答案 1 :(得分:0)
经过进一步研究,我能够解决我的错误。我需要添加file_get_contents
而不是实际路径。
原件:
Yii::app()-> request -> sendFile($fileName, $filePath);
修改:
Yii::app()-> request -> sendFile($fileName, file_get_contents($filePath . "/" . $fileName));