2015-04-03 13:45:10 10712次浏览 3条回答 5 悬赏 50 金钱

大家好,我使用yii2高级模板制作上传的时候遇到些问题,
请问大家在backend应用中上传文件都是怎么存储的。我实际情况这样。
后台上传时,我希望将图片保存到前台的目录下 “frontend\web\upload\xxxx....”
但是后台上传些保存路径的时候 无法获取到前台的存储路劲。
我尝试了。@web,@webroot,等等 都只能获取到 backend...... 请问大家都是怎么处理的?

难道访客前端浏览网页的时候 也是在调用后台的某个url?

呃.... 不好意思我没有描述清楚。
假设我站点根目录在 D:\web\ 下。有yii2框架 并且有目录 backend,frontend 对应域名 admin.yii.com , www.yii.com
在后台上传的时候 别名类的配置都是指向backend\目录下的某个路径。比如某图片上传后实际路径d:\web\backend\web\upload\image.jpg
然后 这些图片 在前台进行浏览的时候 frontend \目录下并没有这些内容。这个时候我如果想显示他 那就需要 http://admin.yii.com/upload\image.jpg

所以我现在想要 后台上传的路劲能否设置为前台的 frontend\web\upload.

最佳答案

  • ArthurSS 发布于 2015-04-04 08:12 举报

    如果你想把图片上传的路劲设置为前台的 frontend\web\upload,方法有很多。
    最简单的一种:

    $model->file->saveAs('../frontend/web/upload/'.$file_name);
    

    ../的意思是上一级目录,是相对于index.php的路径说的。

    如果设置常量的话,@app应该是相对于当期模块的根路径,那就不用它。
    在config目录下新建一个constant.php,写入这样一句话:

    define('APP_BASE_PATH','../');
    

    然后在index.php调用:

    require(__DIR__ . '/../config/constant.php');
    

    然后在图片保存的时候写:

    $model->file->saveAs(APP_BASE_PATH.'frontend/web/upload/'.$file_name);
    

    就可以了,而且APP_BASE_PATH这个常量在其他地方也可以使用。总之方法很多,../这个符号可以让你访问到各个目录。

    1 条回复
    回复于 2015-12-08 22:13 回复

    为什么我用在common目录下用../还是会报错move_uploaded_file(../frontend/web/secondarytile.png): failed to open stream: No such file or directory,按理说应该是能找到路径啊?求解答,谢啦!!!

  • 回答于 2015-04-03 17:00 举报

    @app/image

    3 条回复
    回复于 2015-04-03 17:47 回复

    呃.... 不好意思我没有描述清楚。
    假设我站点根目录在 D:\web\ 下。有yii2框架 并且有目录 backend,frontend 对应域名 admin.yii.com , www.yii.com
    在后台上传的时候 别名类的配置都是指向backend\目录下的某个路径。比如某图片上传后实际路径d:\web\backend\web\upload\image.jpg
    然后 这些图片 在前台进行浏览的时候 frontend \目录下并没有这些内容。这个时候我如果想显示他 那就需要 http://admin.yii.com/upload\image.jpg

    所以我现在想要 后台上传的路劲能否设置为前台的 frontend\web\upload.

    回复于 2015-04-03 17:58 回复

    首先图片上传没有限定死必须要在backend,frontend目录下,还不换一种思路来,像yii中的common一样,你自己建立一个文件夹来存放你的图片,那么你前后台的图片路径都统一了,也方便维护及管理。

    回复于 2015-04-03 18:12 回复

    是这个意思。比如我搞个附件目录。 但是新手,还请多多指教,不知道能否详细一些呢? 比如说这个目录是一个新的应用还是和backend,frontend 同级? 然后访问呢? 目前的前后台已经是2个域名了, 要在搞个file.yii.com吗? 谢谢你。

  • 回答于 2015-04-03 20:31 举报

    即然前后台分离,自然不能使用@web这样的相对路径供客户端进行跨服务访问。访问的路径就应当是指向所属域名的。

您需要登录后才可以回答。登录 | 立即注册
xjdata
CEO

xjdata

注册时间:2011-12-07
最后登录:2021-07-09
在线时长:112小时28分
  • 粉丝23
  • 金钱14169
  • 威望75
  • 积分16039

热门问题