在yii2的高级应用程序中保存图像

在yii2的高级应用程序中保存图像,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,在modelmembers中有一个名为photo的字段。我想访问照片 从前端和后端。因此,我在backend\web\uploads和frontend\web\uploads中创建了两个名为images的文件夹,我的想法是将照片同时保存在后端和前端。 如果我必须在frontend\backend中保存图像,我会使用此代码 if($model->photo != null) { $mod

在model
members
中有一个名为
photo
的字段。我想访问
照片
从前端和后端。因此,我在
backend\web\uploads
frontend\web\uploads
中创建了两个名为images的文件夹,我的想法是将照片同时保存在后端和前端。 如果我必须在frontend\backend中保存图像,我会使用此代码

if($model->photo  != null)
                        {
                            $model->photo->saveAs(\Yii::$app->basePath . '/web/uploads/photo/'.$model->id."_".$model->photo);

                        }

但我不能将此代码用于我的目的,因为我必须将其保存在前端和后端。我该怎么做?

在理想情况下,您应该创建静态子域,如
static.yourdomain.com
,并将图像仅保存到一个位置

在您的情况下,您应该将保存代码复制到前端和后端文件夹

例如:

您可以将上载文件夹放在公用文件夹中。您的保存代码现在应该引用文件夹:

$model->photo->saveAs('@common/uploads/photo/'.$model->id."_".$model->photo);

然后,您可以将基本图像url保存在应用程序的
param
配置中,并在视图中使用它。

您可以创建一个symbolyc链接,这样就不必将文件保存在两个目录中

在linux中,只需从控制台运行ln命令,例如,您有backend\web\uploads目录,然后将frontend\web\uploads作为指向后端目录的符号链接

在linux中,只需运行:

ln -s backend/web/uploads frontend/web/uploads
在windows中,打开command promt,转到yii2目录并运行:

mklink /D frontend\web\uploads backend\web\uploads

请注意,mklink输入的顺序与linux中的ln命令相反。请注意:某些主机设置不允许用户创建符号链接。您可以让提供商为您设置。