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高级应用程序具有中定义的
    @前端
    @后端
    别名

    除非您非常清楚自己在做什么,否则不要更改这些内容。
    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).$path
    code
    我编写了该函数并使用了该函数,但不起作用。请给我发消息@不,我编辑我的代码,我的文件savo to/frontend/web/uploads,我想在后端显示。如何做到这一点?我想在前端和后端一起显示这张图片。它不是参数。你可以查看设置别名亲爱的@tara,不幸的是,我不能远程帮助你,因为这篇文章也必须帮助其他人,所以如果你能给我一些你得到的错误的详细信息,我可以帮助你更多
    php init