gridview yii2中的操作下载

gridview yii2中的操作下载,yii2,yii2-advanced-app,yii2-user,Yii2,Yii2 Advanced App,Yii2 User,我对YII2很陌生。我想为之前上传的文件创建一个下载功能。我提到了如何在Yii2中的Gridview中创建动作下载。但是,当我点击按钮下载时,它会加载空白页面。这是代码 在gridview <?=GridView::widget([ 'dataProvider'=>$dataProvider, 'id'=>'mygrid', 'columns' => [ ['class' => 'yii\grid\Se

我对YII2很陌生。我想为之前上传的文件创建一个下载功能。我提到了如何在Yii2中的Gridview中创建动作下载。但是,当我点击按钮下载时,它会加载空白页面。这是代码

在gridview

<?=GridView::widget([
        'dataProvider'=>$dataProvider,
        'id'=>'mygrid',
        'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'project_name',
        'project_file',
        'created_date',
        [
        'class'    => 'yii\grid\ActionColumn',
        ],
        ['attribute'=>'Download',
        'format'=>'raw',
        'value' => function($data)
        {
        return
        Html::a('Download file', ['firstyear/download', 'id' => $data->id],['class' => 'btn btn-primary']);

        }
        ],
            ]
在actionCreate(上传文件)


谢谢。

我怀疑$path不正确,在创建操作中,您已经在$model->project\u文件中包含了uploads文件夹

但你在actionDownlaod中再次使用它

您应该尝试删除actionDownlaod中的
uploads
文件夹,并添加一些调试消息

    public function actionDownload($id) 
    { 
        .....
        $path=Yii::getAlias('@webroot').'/'.$download->project_file;
        if (file_exists($path)) {
            return Yii::$app->response->sendFile($path);
        } else {
            throw new NotFoundHttpException("can't find {$download->project_file} file");
        }
    }

我怀疑$path不正确,在创建操作中,您已经在$model->project\u文件中包含了uploads文件夹

但你在actionDownlaod中再次使用它

您应该尝试删除actionDownlaod中的
uploads
文件夹,并添加一些调试消息

    public function actionDownload($id) 
    { 
        .....
        $path=Yii::getAlias('@webroot').'/'.$download->project_file;
        if (file_exists($path)) {
            return Yii::$app->response->sendFile($path);
        } else {
            throw new NotFoundHttpException("can't find {$download->project_file} file");
        }
    }

谢谢你,大卫。。非常感谢……太好了!它起作用了@大卫汉克斯大卫。。非常感谢……太好了!它起作用了@大卫
public function actionCreate()
{
    $model = new Firstyear();
    if ($model->load(Yii::$app->request->post())) 
    {      
            .......
            $model->project_file='uploads/'.$project.'.'.$model->file->extension;
            $model->save();
            ....
     }         

}
public function actionDownload($id) 
{ 
    .....
    $path=Yii::getAlias('@webroot').'/uploads/'.$download->project_file;
    if (file_exists($path)) {
        return Yii::$app->response->sendFile($path);

    }
}
    public function actionDownload($id) 
    { 
        .....
        $path=Yii::getAlias('@webroot').'/'.$download->project_file;
        if (file_exists($path)) {
            return Yii::$app->response->sendFile($path);
        } else {
            throw new NotFoundHttpException("can't find {$download->project_file} file");
        }
    }