用thinkphp做了一个多商户的系统,商户在发布信息的时候,希望能将上传的图片放在各商户单独的文件夹里。
思路:
1、thinkphp里面将商户id写入session
2、uedito下面的php文件读取session,然后再上传图片的时候,取出这个参数,插入到附件上传地址的配置里面。
具体实现:
1、商户编辑内容的模板里面,用js执行一个php文件,写入session(因为thinkphp里面写入的session在框架外无法取得,所以用了一个中间文件1.php,执行1.php?companyid=XX,用get方式取得参数,就可以写到session里面)。
模板文件里面的代码:
<script src="/1.php?myadmincompanydir={:hashids_encode($myadmincompany.id)}"></script>
1.php里面的代码
session_start(); //开启session
$_SESSION['myadmincompanydir'] = $_GET['myadmincompanydir'];//取得传递过来的参数,写入session
2、修改ueditor下面的文件。
上传附件的路径配置,默认实在config.json文件下面,这个文件保存的是json格式的配置内容。
这里,我新建了一个config.php文件,将上面文件的json转成数组后放在config.php文件里面。
config.php的代码如下:
<?php
/* 前后端通信相关的配置,注释只允许使用多行方式 */
return [
/* 上传图片配置项 */
"imageActionName"=>"uploadimage", /* 执行上传图片的action名称 */
"imageFieldName"=>"upfile", /* 提交的图片表单名称 */
"imageMaxSize"=>2048000, /* 上传大小限制,单位B */
"imageAllowFiles"=>[".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
"imageCompressEnable"=>true, /* 是否压缩图片,默认是true */
"imageCompressBorder"=>1600, /* 图片压缩最长边限制 */
"imageInsertAlign"=>"none", /* 插入的图片浮动方式 */
"imageUrlPrefix"=>"", /* 图片访问路径前缀 */
"imagePathFormat"=>"/upload/image/{yyyy}{mm}{dd}/{time}{rand