为了账号安全,请及时绑定邮箱和手机立即绑定

下载或查看位于 serverb yii 2 中上传的文件

下载或查看位于 serverb yii 2 中上传的文件

PHP
莫回无 2021-12-03 10:42:26
我已将文件上传到服务器,我想下载该文件。我该怎么做。这是控制器中的上传    {        $model = new Upload();         if ($model->load(Yii::$app->request->post()))            {                $filename = $model->_upload;                $model->_upload= UploadedFile::getInstance($model,'_upload');                $model->_upload->saveAs('uploads/'.$filename.'.'.$model->_upload->extension);                $model->_upload = 'uploads/'.$filename.'.'.$model->_upload->extension;                $model->save();                return $this->redirect(['view', 'id' => $model->id_uploads]);                    return $this->redirect(['index']);        }        return $this->render('create', [            'model' => $model,        ]);    }
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

假设您的uploads文件夹位于 web 目录或 webroot 中,您可以使用以下功能,只需将粘贴复制到您的控制器中,然后下载文件,filename在查询字符串中键入 url 以及例如,如果您的控制器名称是FilesController那么网址将是www.mydomain.com/files/download?filename=your_file_name


 /**

 * Downloads the file

 *

 * @param string $filename the name of the file to be downloaded

 *

 * @return mixed

 */

public function actionDownload($filename)

{

    $filepath = \Yii::getalias('@webroot') . DIRECTORY_SEPARATOR

        . 'uploads' . DIRECTORY_SEPARATOR . $filename;

    return \Yii::$app->response->sendFile($filepath);

}

请注意

这是最简单的方法,您将文件名与表中的路径一起保存,这是错误的,您应该只保存文件名和扩展名,就像my_file.doc没有路径一样,然后下载文件只需查找文件名在表中使用文件 id 而不是文件名或与表中的文件名一起存储的任何类型的哈希


public function actionDownload($fileId)

{

       $filename = Upload::findOne(['id_uploads'=>$fileId]);

       $filepath = \Yii::getalias('@webroot') . DIRECTORY_SEPARATOR

           . 'uploads' . DIRECTORY_SEPARATOR . $filename;

       return \Yii::$app->response->sendFile($filepath);

}

其次,您应该遵循类属性的命名约定,_upload因为公共属性看起来很奇怪,因为大多数私有成员变量都带有下划线前缀。你应该使用一些编码标准,比如phpcs


以及if条件中的 2 个重定向语句是什么


return $this->redirect(['view', 'id' => $model->id_uploads]);

return $this->redirect(['index']);

第二个是无法访问的,只需将其删除即可。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信