yii2高级:如何在后端保存图像并在后端和前端查看图像?
嗨,我在前端保存图像,在前端显示为真,我用很多方法在后端查看,但不起作用。 请帮帮我 我的控制器在后端yii2高级:如何在后端保存图像并在后端和前端查看图像?,yii2,frontend,backend,yii2-advanced-app,Yii2,Frontend,Backend,Yii2 Advanced App,嗨,我在前端保存图像,在前端显示为真,我用很多方法在后端查看,但不起作用。 请帮帮我 我的控制器在后端 Yii::$app->params['uploadPath'] = Yii::getAlias('@frontend') .'/web/uploads/'; $path = Yii::$app->params['uploadPath'] . $model->image_web_filename; $image->saveAs
Yii::$app->params['uploadPath'] = Yii::getAlias('@frontend') .'/web/uploads/';
$path = Yii::$app->params['uploadPath'] . $model->image_web_filename;
$image->saveAs($path);
url我的后端和前端是分开的
backend:yii.com/:81
frontend:yii.com
我测试了这些soloution,但不起作用:
https://stackoverflow.com/questions/23155428/how-to-get-root-directory-in-yii2
我在backend\config的别名文件中插入了两个别名:
Yii::setAlias('@frontend', 'http://frontend.sample.dev');
Yii::setAlias('@backend', 'http://backend.sample.dev');
并在backend/web/index.php中使用它
require(__DIR__ . '/../config/aliases.php');
但我得到了这个错误:
An Error occurred while handling another error:
exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "site/error".' in
/var/www/blog/vendor/yiisoft/yii2/base/Module.php:532
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/web/ErrorHandler.php(95):
yii\base\Module->runAction('site/error')
#1 /var/www/blog/vendor/yiisoft/yii2/base/ErrorHandler.php(111):
yii\web\ErrorHandler->renderException(Object(yii\web\NotFoundHttpException))
#2 [internal function]: yii\base\ErrorHandler-
>handleException(Object(yii\web\NotFoundHttpException))
#3 {main}
Previous exception:
exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "post/index".' in
/var/www/blog/vendor/yiisoft/yii2/base/Module.php:532
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/web/Application.php(102):
yii\base\Module->runAction('post/index', Array)
#1 /var/www/blog/vendor/yiisoft/yii2/base/Application.php(380):
yii\web\Application->handleRequest(Object(yii\web\Request))
#2 /var/www/blog/backend/web/index.php(18): yii\base\Application->run()
#3 {main}
Next exception 'yii\web\NotFoundHttpException' with message 'Page not
found.' in /var/www/blog/vendor/yiisoft/yii2/web/Application.php:114
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/base/Application.php(380):
yii\web\Application->handleRequest(Object(yii\web\Request))
#1 /var/www/blog/backend/web/index.php(18): yii\base\Application->run()
#2 {main}
在components文件夹中创建此函数
namespace common\components;
use Yii;
class Helper extends \yii\web\Request {
public static function getFrontendUrl($path) {
$frontUrl = str_replace('/adminpanel', '', $path);
return $frontUrl;
}
}
并在后端使用:
$path\common\components\Helper::getFrontendUrl(Yii::$app->request->baseUrl)。$img
注意:在前端,您不需要
您可以尝试以下解决方案:
Yii::setAlias('@frontend', 'http://frontend.sample.dev');
Yii::setAlias('@backend', 'http://backend.sample.dev');
如果您在后端上传文件,请将image的src
参数设置为
Yii::getAlias('@backend/path/to/your/image/file');
如果您将文件保存在前端,请将
@backend
替换为@frontend
我参加聚会已经很晚了但我有几根骨头要挑。。下面是:
因此,您分别为
yii.com/:80
和yii.com/:81
提供不同的文件夹/frontend/web
和/backend/web
记住这一点,
任何数量的别名都不能使其中一个别名的内容对另一个可用。
@前端
和@后端
别名
除非您非常清楚自己在做什么,否则不要更改这些内容。Yii使用这些别名自动加载在这些名称空间(公共、前端、后端和控制台)下定义的类。正是这一点导致了“在处理其他错误时发生错误”这一荒谬的链条
更多详情
您只需创建一个从
frontend/web/uploads
到backend/web/uploads
的符号链接,即可共享这些文件夹的内容
您的Web服务器配置(或.htaccess)将需要+FollowSymLinks
选项
如果您在environments/index.php
文件中添加几行代码,我就可以处理这个问题
'Development' => [
// .. other options
'setWritable' => [
// .. leave the default stuff there
'frontend/web/uploads',
],
'createSymlink' => [
// link => real folder
'backend/web/uploads' => 'frontend/web/uploads',
]
],
'Production' => [
// ..
'setWritable' => [
// ..
'frontend/web/uploads',
],
'createSymlink' => [
// link => real folder
'backend/web/uploads' => 'frontend/web/uploads',
]
],
然后再次运行init命令,就像在安装指南中一样(您必须选择不覆盖本地配置文件)如果您在windows下运行,现在可能会要求您提升权限
php init
或者,如果您选择手动创建符号链接,您可以尝试以下操作Yii::getAlias('@backend')的值是多少Yii::setAlias('backend',dirname(dirname(DIR))。/backend');您能否为其中一个文件提供$path,以及您为图像设置的在frontendurl中显示我在frontend中的图像的路径:src=“uploads/”.$model->image\u web\u filename.“我的图像的url:blog/frontend/web/uploads/”.$model->image\u web\u filename.。”“此错误与别名无关,这说明yii无法路由到
post/index
您是否有PostController.php文件以及如何调用url,像这样index.php?r=post/index
或index.php/post/index
谢谢你的回答,但我把这个函数放在哪里了?你可以在components文件夹中使用create class。我在components文件夹中使用并创建helper类。像这样使用:code
helper::getFrontendUrl(Yii:$app->->request->baseUrl).$pathcode
我编写了该函数并使用了该函数,但不起作用。请给我发消息@不,我编辑我的代码,我的文件savo to/frontend/web/uploads,我想在后端显示。如何做到这一点?我想在前端和后端一起显示这张图片。它不是参数。你可以查看设置别名亲爱的@tara,不幸的是,我不能远程帮助你,因为这篇文章也必须帮助其他人,所以如果你能给我一些你得到的错误的详细信息,我可以帮助你更多
php init