Dedecms5.7实现批量上传图片二次开发

实现步骤:
1.下载5.6 ,去官方下载5.6的版本,注意编码要一致!
在include文件夹下把FCKeditor文件夹复制到5.7的include的文件夹下!
2.修改后台配置:如图所示,改成fck

ckeditor图片批量上传(Zend+PHP)
1:要求
项目中的一个要求,原来后台的商品图片只能一张一张的上传,现在要求优化为一次可以上传多张,并且直接插入到编辑器中
2:思路
仍采用原来上传图片的程序,只是在上传页面中添加多个上传输入框,提交时候,将所有文件都提交到后台控制器,修改控制器处理代码以及回调函数
3:步骤
(1)  新增图片批量上传tab标签
       1.1    fckeditor/editor/lang/zh-cn.js  文件新增tab变量声明
                DlgMultiUpload      : "批量上传图片",

        1.2   fckeditor/editor/dialog/fck_image/fck_image.js   文件新增tab标签调用

 代码如下 复制代码

        if ( FCKConfig.ImageUpload )
       dialog.AddTab( 'MultiUpload', FCKLang.DlgMultiUpload ) ;

      if(tabCode =="MultiUpload")//此tab标签页面还有一个相册分类需要获取
    {
        dialog.Sizer.ResizeDialog(450,450);//初始化弹出框的大小
        $.getJSON('/picture/cate/get',{},function(data){//在其他项目中这个不是必须的
            if(data.items.length>0)
            {
                $("#multi_albumlist").empty();
                $.each(data.items,function(i,cate){
                    var option = new Option(cate.cate_name,cate.cate_id);
                    $("#multi_albumlist").append(option);
                });               
            }
            else
            {
                var option = new Option('','');
                $("#multi_albumlist").append(option);
            }
            $("#multi_albumlist").show();
        });           
    }   


      1.3      fckeditor/fckconfig.js  文件新增图片批量上传Url
                 FCKConfig.ImageMultiUploadURL ='/picture/upload/multisave';
 (2)  页面布局设置
        fckeditor/editor/dialog/fck_image.html
             
<div id="divMultiUpload" style="display: none">
        <form id="frmMultiUpload" method="post" target="UploadWindow1" enctype="multipart/form-data" action="" onsubmit="return CheckMultiUpload();">
              <input id="txtUploadFile1" style="width: 80%" type="file" size="40" name="MultiPhotoFile0_f" /><br /><br />
              <input id="txtUploadFile2" style="width: 80%" type="file" size="40" name="MultiPhotoFile1_f" /><br /><br />
              <input id="txtUploadFile3" style="width: 80%" type="file" size="40" name="MultiPhotoFile2_f" /><br /><br />
              <input id="txtUploadFile4" style="width: 80%" type="file" size="40" name="MultiPhotoFile3_f" /><br /><br />
              <input id="txtUploadFile5" style="width: 80%" type="file" size="40" name="MultiPhotoFile4_f" /><br /><br />
              <input id="txtUploadFile6" style="width: 80%" type="file" size="40" name="MultiPhotoFile5_f" /><br /><br />
              <div>
                  <label style='line-height:20px;'><span  style='line-height:20px;'>压缩:</span><input type='checkbox' name='multi_compress' value='1' checked='checked' /></label>
                  <label style='line-height:20px;'><span  style='line-height:20px;'>加水印:</span><input type='checkbox' name='multi_water' value='1' checked='checked' /></label><br/>
                  相册: <select id="multi_albumlist" style='display:none;' name='multi_cate_id' ></select>
                  <a href='javascript:void(0)' id="multi_linkCreateAlbum" onclick="return multi_checkalbum();" >新建相册</a>
                  <input type="text" id="multi_newalbuminput" name="multi_album_name" size="10" maxlength="50" style='display:none;' >
                  <button id="multi_btnCreateAlbum" style='display:none;' onclick="return multi_createNewAlbum();" >创建</button> <a href="javascript:void(0)" id="multi_btnCancelAlbum" style='display:none;' onclick="multi_cancelAlbum()" >取消</a>
                  <input type='hidden' name='multi_pic_f' value='goods_add'  />
              </div>
            <p><input id="btnUpload1" type="submit" value="插入图片"  /></p>
            <script type="text/javascript">
                document.write( '<iframe name="UploadWindow1" style="display: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
            </script>
        </form>
    </div>
(3) 提交时js验证
function CheckMultiUpload()
{
    var sFile1 = GetE('txtUploadFile1').value ;
    var sFile2 = GetE('txtUploadFile2').value ;
    var sFile3 = GetE('txtUploadFile3').value ;
    var sFile4 = GetE('txtUploadFile4').value ;
    var sFile5 = GetE('txtUploadFile5').value ;
    var sFile6 = GetE('txtUploadFile6').value ;
    if ( sFile1.length == 0 && sFile2.length == 0 && sFile3.length == 0 && sFile6.length == 0 && sFile5.length == 0 && sFile6.length == 0)
    {
        alert( '请至少上传一张图片' ) ;
        return false ;
    }
    if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
        ( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
    {
        OnUploadCompleted( 202 ) ;
        return false ;
    }

    // Show animation
    window.parent.Throbber.Show() ;
    GetE( 'divMultiUpload' ).style.display  = 'none' ;

    return true ;
}
(4)回调函数
function callback_multisubmit(status, errid,html){
    if(status==0)
    {
        //将图片直接插入到编辑器中
        var oParentEditor=window.parent.InnerDialogLoaded().FCK;
        oParentEditor.InsertHtml(html);
        dialog.CloseDialog();
        return;
    }
    switch(errid)
    {
        case 0 :
            alert('该图片未上传成功,请重新上传。');
            break;
        case 1 :
            alert('该照片未上传成功,相册空间不足。');
            break;
        case 2 :
            alert('您选择的这张照片超过2MB,请重新选择。');
            break;
        case 3:
            alert('图片格式不正确,您可以上传JPG、GIF和PNG格式的照片。');
            break;
        default : alert('该图片未上传成功,请重新上传。');
    }
}
(5)提交后控制器处理

        $img_url = array();
        $img_title = array();
        for($i=0;$i<$count;$i++)
        {          
                    $file_name = "MultiPhotoFile".$i."_f";
                    if(!empty($_FILES [$file_name]["tmp_name"]))
                    {
                        $file = new Henu_UploadFile ( '/temp/', $_FILES [$file_name] ["tmp_name"], $_FILES [$file_name] ["name"], $_FILES [$file_name] ["size"], $_FILES [$file_name] ["type"] );
                        $check_res = $file->check ();
                        if ($check_res !== true)
                        {
                            //报错
                            if ($check_res == 1)
                            {
                                echo "<script>parent.callback_multisubmit(1,2);</script>";
                            }
                            elseif ($check_res == 2)
                            {
                                echo "<script>parent.callback_multisubmit(1,3);</script>";
                            }
                            return;
                        }
                        $img_info = $file->upSend (); //返回上传文件信息   
                        if ($img_info === false)
                        {
                            //报错
                            echo "<script>parent.callback_submit(1,0);</script>";
                            return;
                        }
                        $title = $img_info ["OldName"];
                        $filetype = $img_info ["filetype"];
                        switch ($filetype)
                        {
                            case "image/jpg" :
                                $filetype = "jpg";
                                break;
                            case "image/gif" :
                                $filetype = "gif";
                                break;
                            case "image/png" :
                                $filetype = "png";
                                break;
                            default :
                                $filetype = "jpg";
                        }
                        //如果是商品上传,都处理成jpg
                        if ($pic_f == "goods_add")
                        {
                            $filetype = "jpg";
                        }
                        /**
                         * 调用图片上传
                         */
                        $client->setConfig ( "upload", "index", "POST", array ("store_id" => $store_id, "cate_id" => $cate_id, "file_type" => $filetype, "title" => htmlspecialchars ( $title ), "water" => $water, "compress" => $compress, "ip" => ip2long ( real_ip () ) ), "picture" );
                        $http = $client->getHttp ();
                        $http->setFileUpload ( $img_info ["pictureTruePath"], 'img' );
                        $res = $client->getData ();
                        if (isset ( $res ["rsp"] ["img"] ))
                        {
                            /**
                             * 图片上传成功
                             */
                            @unlink ( $img_info ["pictureTruePath"] );
                            if ($pic_f == "goods_add") //商品上传
                            {
                                $img_url[$i] = $res ["rsp"] ["img"] ["picture_path"] . '.' . $res ["rsp"] ["img"] ["file_type"];
                                $img_title[$i] = $title;
                           
                            }
                            else
                            {
                                echo "<script>parent.callback_multisubmit(0,0);</script>";
                            }
                        }
                        else
                        {
                            echo "<script>parent.callback_multisubmit(1,0);</script>";
                        }
                    }
        }
        for($i=0;$i<=$count;$i++)
        {  
            if(!empty($img_url[$i]))
            {
                $callback_temp = "<img src='$img_url[$i]' alt='$img_title[$i]' /><br/>";
                $callback_html .= $callback_temp;
            }
        }
        echo '<script>parent.callback_multisubmit(0,0,"' . $callback_html . '");</script>';
    }

时间: 2024-07-30 10:45:11

Dedecms5.7实现批量上传图片二次开发的相关文章

需要制作批量上传图片的功能,不知道有什么什么好的插件或者想法呢?

问题描述 新手,现在任务需要制作一个批量上传图片的文件,有几点要求:1.数量不一定,需要可以动态增加.2.文件是写入到数据库固定字段当中.3.写入数据库的同时,每个图片需要加说明内容,说明内容也要写入到数据库当中.不知道各位大大有没有什么好的插件推荐?或者好的想法也可以呀~ 解决方案 解决方案二:将图片文件放一个目录下,读取所有文件,将文件依次入库,一个文件一条记录,有文字说明的字段和保存图片的image字段,就可解决方案三:引用1楼wind_cloud2011的回复: 将图片文件放一个目录下,

java中如何实现批量上传图片,用什么组件?

问题描述 java中如何实现批量上传图片,需要用到什么组件?有具体代码就更好... 解决方案 解决方案二:JDK中冒似没有这样的组建给你用,自己写一个吧解决方案三:用struts就可以实现批量上传...介绍这个文章给你看一下..比较简单.http://lovexuwenhao.javaeye.com/blog/459064解决方案四:swfupload解决方案五:jspSmartUpload;common-fileUpload;structs和spring也可以实现不过这些都限于JAVAWEB开

asp.net-asp. net 批量上传图片,手机uc浏览器如何批量上传啊,不是一张一张的上传

问题描述 asp. net 批量上传图片,手机uc浏览器如何批量上传啊,不是一张一张的上传 asp. net 批量上传图片,uc浏览器如何批量上传啊,不是一张一张的上传 解决方案 参考:http://download.csdn.net/download/u013848060/7608825 解决方案二: 试一下这个 用Html5与Asp.net MVC上传多个文件的实现代码 http://www.shangxueba.com/jingyan/1915360.html

java后台+多进度条监控+异步+html5批量上传图片+jquery

问题描述 java后台+多进度条监控+异步+html5批量上传图片+jquery 小弟现在要做一个项目,情况是这样的,基于html5批量选择文件:java后台监控进程:jQuery发回调函数:一个文件配对一个进度条,点击上传后所有文件同时上传,不等待,并同时.分别显示进度百分比:就是异步同时上传,同时监控.现在的问题是java后台的servlet中的方法的变量如何循环如何写.jQuery的回调函数怎么写?请高人指点.(除了jQuery库之外不加任何插件) 解决方案 java 图片批量上传 htm

andriod-Android 如何的批量上传图片,类似于微信的风格

问题描述 Android 如何的批量上传图片,类似于微信的风格 服务器端 和客户端是如何实现.求教如何 实现的.volley 或者android-async-http 不会实现 解决方案 Android 图片(文件--带参数)批量上传到服务器 解决方案二: volley可以单张传,你搞个循环就行,你要做的是多选相片,你搜一下,有开源的 解决方案三: 你百度"仿微信图片选择"有好多demo的

怎样批量上传图片到空间,页面可以搜索并显示该图片?求代码

问题描述 我用的织梦,希望批量上传图片到空间后,不用发布文章,在网站前台设置搜索栏,用户在搜索栏中搜索图片的名字,然后就能在网页上显示出来. 解决方案 解决方案二:比如说批量上传的图片中有叫123的图片,用户在前台搜索123,图片就显示出来了.

百度ueditor编辑器二次开发实例

最近在做一个后台的项目,项目中用到了复文本框,公司用的是UEditor,但是需求为了更方便编辑图片,特意提了如下功能: 1.上传图片时图片宽度固定为500,长度等比例进行缩放,但不限制单张图片长度:图片进行等比缩放后保持100%原画质: 2.长传图片是选中图片后点击确定自动上传,无需再选择一次"开始上传". 3.图片上传完成后,在图片下方添加一个选填的文本输入框用以填写图注,如填写,图注使用默认字体居中显示. 针对上面的需求,我对 UEditor源码进行了研究和修改.看到网上有关UEd

phpcms v9自定义HTML文件名字的二次开发

1.修改你需要设置的模型,添加一个字段,配置如下:   开发-phpcmsv9二次开发教程"> 2.打开/phpcms/modules/content/create_html.php,找到代码: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']); 批量替换为: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputt

长连接-c#腾讯企业邮箱二次开发实现新邮件提醒

问题描述 c#腾讯企业邮箱二次开发实现新邮件提醒 新邮件提醒,需要维持长连接,图片是API文档关于长连接的描述, 但是我获取到token,传入参数ver=0,返回错误,无效的请求,有做过这个功能的吗,求助啊!! private bool GetPostData(string url, string pars, ref string json) { System.GC.Collect(); //url=请求的地址,pars= "var=0" string ret = "&quo