Php Yii2 SendFile()显示一些字符而不是下载
我有控制器代码:Php Yii2 SendFile()显示一些字符而不是下载,php,yii,yii2,Php,Yii,Yii2,我有控制器代码: public function actionDownload($id){ $download=状态::findOne($id); $path=Yii::getAlias('@webroot')。/uploads/status/'.$download->image\u web\u filename; 如果(文件_存在($path)){ 返回Yii::$app->response->SendFile($path,$download->image\u src\u filename)
public function actionDownload($id){
$download=状态::findOne($id);
$path=Yii::getAlias('@webroot')。/uploads/status/'.$download->image\u web\u filename;
如果(文件_存在($path)){
返回Yii::$app->response->SendFile($path,$download->image\u src\u filename);
出口
}否则{
抛出新的NotFoundHttpException(“找不到{$download->image\u src\u filename}文件”);
}
}
看起来您需要标题
请尝试使用以下代码:
public function actionDownload($id) {
header("Content-type:application/pdf");
........
如果不工作,请尝试添加此标题
header("Content-Disposition:attachment;filename='filename.pdf'");
我在这段特定代码中遇到的问题是,我必须删除
和
以及上面和gridview列中的'pjax'=>true
,这样它就工作了,我没有更改操作下载($id)
代码中的任何内容
编辑前(原始错误代码)
`....................................
`
编辑后(原始错误代码)
`
`
就这些!!我发现了。只需添加
ob_clean();
以前
return Yii::$app->response->SendFile($path,$download->image_src_filename);
。
ob_clean()将清理输出并修复问题。
这对我有用。
谢谢
ob_clean();
return Yii::$app->response->SendFile($path,$download->image_src_filename);