我要求将文档上传到服务器,因为它是个人文件,他们希望将文件上传到公共文件夹之外。我知道如何上传文件:
if ($model->load(Yii::$app->request->post())) {
$model->document = UploadedFile::getInstance($model, 'document');
if ($model->upload() !== false) {
$model->save();
}
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
但是我如何读取它,因为Url无法访问它?我打算创建一个动作来获取文件,但不确定Yii是否为这种情况准备好了什么?
答案 0 :(得分:2)
是的Yii可以发送文件输出,但您仍然需要创建自己的操作。
让我们假设siteController中的以下代码特定于图像输出,您可以使用相同的方式输出其他文件。
public function actionImage($image_path) {
Yii::$app->getResponse()->sendFile(Yii::getAlias('@image_uploads') . $image_path);
}
现在图像src将类似于
<img src="/site/image?image_path=/posts/1.png" />
或等效于真实应用程序URL路由
因此Yii2发送文件输出的基本功能是
的Yii :: $ APP-&GT; GETRESPONSE() - &GT; SENDFILE();
位于
下\ YII \网络\ Response.php