Yii 2. 在 public 文件夹外上传文档
Yii 2. Upload document outside public folder
我需要将文件上传到服务器,因为它是个人文件,他们希望将其上传到 public 文件夹之外。我知道如何上传文件:
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 是否已经为这种情况做好了准备?
是的,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 routes
所以 Yii2 发送文件输出的基本函数是
Yii::$app->getResponse()->sendFile();
位于
下
\yii\web\Response.php
我需要将文件上传到服务器,因为它是个人文件,他们希望将其上传到 public 文件夹之外。我知道如何上传文件:
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 是否已经为这种情况做好了准备?
是的,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 routes
所以 Yii2 发送文件输出的基本函数是
Yii::$app->getResponse()->sendFile();
位于
下\yii\web\Response.php