Yii2 KCFinder:如何将图片上传到 "Common" 或 "Frontend" 目录
Yii2 KCFinder : How to upload images to "Common" or "Frontend" directory
我运行遇到了问题。我使用 CKEditor 创建 HTML 编辑器,还使用 KCFinder 在 HTML 编辑器中上传和插入图像。我的问题是,我无法在我的前端网站中显示通过 KCFinder 上传的图像
我的代码(在backend/view/_form)
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use backend\modules\CKEditor;
use iutbay\yii2kcfinder\KCFinder;
$kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [
//'uploadURL' => Yii::getAlias('@web').'/upload',
'uploadURL' => Yii::getAlias('@common').'/upload',
'access' => [
'files' => [
'upload' => true,
'delete' => true,
'copy' => true,
'move' => true,
'rename' => true,
],
'dirs' => [
'create' => true,
'delete' => true,
'rename' => true,
],
],
]);
// Set kcfinder session options
Yii::$app->session->set('KCFINDER', $kcfOptions);
?>
<div class="emails-form">
<?php yii\widgets\Pjax::begin(['id' => 'new_email']) ?>
<?php $form = ActiveForm::begin(['options' => ['enctype'=>'multipart/form-data' ]]); ?>
<?= $form->field($model, 'receiver_name')->textInput(['maxlength' => 200]) ?>
<?= $form->field($model, 'receiver_email')->textInput(['maxlength' => 200]) ?>
<?= $form->field($model, 'subject')->textInput(['maxlength' => 200]) ?>
<?//= $form->field($model, 'content')->textarea(['maxlength' => 200]) ?>
<?= $form->field($model, 'content')->widget(CKEditor::className(), [
'options' => ['rows' => 6],
'preset' => 'full'
//'preset' => 'basic'
])
?>
<?= $form->field($model, 'attachment')->fileInput(['maxlength' => 200]) ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php yii\widgets\Pjax::end() ?>
</div>
现在我的代码可以正常工作,但图像将上传到 "backend/web/upload" 我如何通过 KCFinder 将图像上传到 "frontend/web/upload"?
或者对这个案例有什么建议的解决方案吗?我需要使用 CKEditor+KCFinder 创建一个新闻表单,然后我可以在前端网站中显示内容。
非常感谢您的帮助。
看看 Yii2 提供了两个 frontend/backend 供我们使用。我建议暂时忘记它在后端。
您可以做的是设置参数,它将转到 backend/web/updloads 并仅在数据库中保存文件名,我的意思是上传文件夹后的文件 name/path。
像这样:
这将是您的后台:backend.example.com/uploads/
上传后数据库中的文件名:file.jpg、profile/firstuser.png。
当您能够从前端访问它时,只需将您的上传文件夹从后端复制到前端。
看,我知道这不是写解决方案,但它对我有用。我认为它会帮助我。
这是我的第一个回答,如果我不清楚请问:)
谢谢
终于,我找到了解决办法。我使用命令创建了 link :
cd /path/to/project/frontend/web
ln -s ../../backend/web/upload upload
之后,我编辑了 httpd-vhosts.conf 以允许 "Options +FollowSymlinks".
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/path/to/project/frontend/web"
Options +FollowSymlinks
...
</VirtualHost>
不要忘记"restart" apache 服务。 :)
参考站点 -> http://www.yiiframework.com/wiki/799/yii2-app-advanced-on-single-domain-apache-nginx/
我运行遇到了问题。我使用 CKEditor 创建 HTML 编辑器,还使用 KCFinder 在 HTML 编辑器中上传和插入图像。我的问题是,我无法在我的前端网站中显示通过 KCFinder 上传的图像
我的代码(在backend/view/_form)
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use backend\modules\CKEditor;
use iutbay\yii2kcfinder\KCFinder;
$kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [
//'uploadURL' => Yii::getAlias('@web').'/upload',
'uploadURL' => Yii::getAlias('@common').'/upload',
'access' => [
'files' => [
'upload' => true,
'delete' => true,
'copy' => true,
'move' => true,
'rename' => true,
],
'dirs' => [
'create' => true,
'delete' => true,
'rename' => true,
],
],
]);
// Set kcfinder session options
Yii::$app->session->set('KCFINDER', $kcfOptions);
?>
<div class="emails-form">
<?php yii\widgets\Pjax::begin(['id' => 'new_email']) ?>
<?php $form = ActiveForm::begin(['options' => ['enctype'=>'multipart/form-data' ]]); ?>
<?= $form->field($model, 'receiver_name')->textInput(['maxlength' => 200]) ?>
<?= $form->field($model, 'receiver_email')->textInput(['maxlength' => 200]) ?>
<?= $form->field($model, 'subject')->textInput(['maxlength' => 200]) ?>
<?//= $form->field($model, 'content')->textarea(['maxlength' => 200]) ?>
<?= $form->field($model, 'content')->widget(CKEditor::className(), [
'options' => ['rows' => 6],
'preset' => 'full'
//'preset' => 'basic'
])
?>
<?= $form->field($model, 'attachment')->fileInput(['maxlength' => 200]) ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php yii\widgets\Pjax::end() ?>
</div>
现在我的代码可以正常工作,但图像将上传到 "backend/web/upload" 我如何通过 KCFinder 将图像上传到 "frontend/web/upload"? 或者对这个案例有什么建议的解决方案吗?我需要使用 CKEditor+KCFinder 创建一个新闻表单,然后我可以在前端网站中显示内容。 非常感谢您的帮助。
看看 Yii2 提供了两个 frontend/backend 供我们使用。我建议暂时忘记它在后端。
您可以做的是设置参数,它将转到 backend/web/updloads 并仅在数据库中保存文件名,我的意思是上传文件夹后的文件 name/path。
像这样:
这将是您的后台:backend.example.com/uploads/ 上传后数据库中的文件名:file.jpg、profile/firstuser.png。
当您能够从前端访问它时,只需将您的上传文件夹从后端复制到前端。
看,我知道这不是写解决方案,但它对我有用。我认为它会帮助我。
这是我的第一个回答,如果我不清楚请问:)
谢谢
终于,我找到了解决办法。我使用命令创建了 link :
cd /path/to/project/frontend/web
ln -s ../../backend/web/upload upload
之后,我编辑了 httpd-vhosts.conf 以允许 "Options +FollowSymlinks".
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/path/to/project/frontend/web"
Options +FollowSymlinks
...
</VirtualHost>
不要忘记"restart" apache 服务。 :)
参考站点 -> http://www.yiiframework.com/wiki/799/yii2-app-advanced-on-single-domain-apache-nginx/