Ueditor编辑器上传文件动态传递图片保存的路径参数

用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:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                                /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
                                /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
                                /* {time} 会替换成时间戳 */
                                /* {yyyy} 会替换成四位年份 */
                                /* {yy} 会替换成两位年份 */
                                /* {mm} 会替换成两位月份 */
                                /* {dd} 会替换成两位日期 */
                                /* {hh} 会替换成两位小时 */
                                /* {ii} 会替换成两位分钟 */
                                /* {ss} 会替换成两位秒 */
                                /* 非法字符 \ =>* ? " < > | */
                                /* 具请体看线上文档=>fex.baidu.com/ueditor/#use-format_upload_filename */

    /* 涂鸦图片上传配置项 */
    "scrawlActionName"=>"uploadscrawl", /* 执行上传涂鸦的action名称 */
    "scrawlFieldName"=>"upfile", /* 提交的图片表单名称 */
    "scrawlPathFormat"=>"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "scrawlMaxSize"=>2048000, /* 上传大小限制,单位B */
    "scrawlUrlPrefix"=>"", /* 图片访问路径前缀 */
    "scrawlInsertAlign"=>"none",

    /* 截图工具上传 */
    "snapscreenActionName"=>"uploadimage", /* 执行上传截图的action名称 */
    "snapscreenPathFormat"=>"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "snapscreenUrlPrefix"=>"", /* 图片访问路径前缀 */
    "snapscreenInsertAlign"=>"none", /* 插入的图片浮动方式 */

    /* 抓取远程图片配置 */
    "catcherLocalDomain"=>["127.0.0.1", "localhost", "img.baidu.com"],
    "catcherActionName"=>"catchimage", /* 执行抓取远程图片的action名称 */
    "catcherFieldName"=>"source", /* 提交的图片列表表单名称 */
    "catcherPathFormat"=>"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "catcherUrlPrefix"=>"", /* 图片访问路径前缀 */
    "catcherMaxSize"=>2048000, /* 上传大小限制,单位B */
    "catcherAllowFiles"=>[".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */

    /* 上传视频配置 */
    "videoActionName"=>"uploadvideo", /* 执行上传视频的action名称 */
    "videoFieldName"=>"upfile", /* 提交的视频表单名称 */
    "videoPathFormat"=>"/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "videoUrlPrefix"=>"", /* 视频访问路径前缀 */
    "videoMaxSize"=>102400000, /* 上传大小限制,单位B,默认100MB */
    "videoAllowFiles"=>[
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */

    /* 上传文件配置 */
    "fileActionName"=>"uploadfile", /* controller里,执行上传视频的action名称 */
    "fileFieldName"=>"upfile", /* 提交的文件表单名称 */
    "filePathFormat"=>"/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "fileUrlPrefix"=>"", /* 文件访问路径前缀 */
    "fileMaxSize"=>51200000, /* 上传大小限制,单位B,默认50MB */
    "fileAllowFiles"=>[
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ], /* 上传文件格式显示 */

    /* 列出指定目录下的图片 */
    "imageManagerActionName"=>"listimage", /* 执行图片管理的action名称 */
    "imageManagerListPath"=>"/upload/image/", /* 指定要列出图片的目录 */
    "imageManagerListSize"=>20, /* 每次列出文件数量 */
    "imageManagerUrlPrefix"=>"", /* 图片访问路径前缀 */
    "imageManagerInsertAlign"=>"none", /* 插入的图片浮动方式 */
    "imageManagerAllowFiles"=>[".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */

    /* 列出指定目录下的文件 */
    "fileManagerActionName"=>"listfile", /* 执行文件管理的action名称 */
    "fileManagerListPath"=>"/upload/file/", /* 指定要列出文件的目录 */
    "fileManagerUrlPrefix"=>"", /* 文件访问路径前缀 */
    "fileManagerListSize"=>20, /* 每次列出文件数量 */
    "fileManagerAllowFiles"=>[
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ] /* 列出的文件类型 */

]


?>

可以看到,默认的路径是在/upload/文件下。

然后修改controller.php文件

<?php
//header('Access-Control-Allow-Origin: http://www.baidu.com'); //设置http://www.baidu.com允许跨域访问
//header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); //设置允许的跨域header
date_default_timezone_set("Asia/chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8");

$CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json")), true);//这是默认的读取config.json的语句

/*以下是自定义的代码,从config.php读取配置参数,然后从session读取当前商户的附件存放目录,然后做一下替换
*/
$CONFIG = include("config.php");
session_start();   //开启session
$dir = $_SESSION['myadmincompanydir'];
$CONFIG = str_replace('/upload/','/upload/attachment/com'.$dir.'/',$CONFIG);

/*
添加的代码结束
*/

//var_dump($CONFIG);exit;
$action = $_GET['action'];

switch ($action) {
    case 'config':
        $result =  json_encode($CONFIG);

代码修改完毕。

3、测试

进入商户发布信息或编辑信息页面

控制台可以看到目录已经变更多来了。

再上传一张图试一下,查看图片的路径,可以看到,已经修改成功。

截屏贴一张进去看看

可以看到,地址也更新了。

修改完毕,记录一下,免得后面忘记了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值