主题: CFUpload图片批量上传整合成功
作者: 一页白纸, 发布日期: 2012-04-01 11:24:14, 浏览数: 10756

本人采用的是自定义功能的方式整合了批量上传的功能,灵活使用方便。

新增了一个按钮叫批量上传

打开的界面:

然后选择文件:

选择完成后进行上传:

最后点击确定加载到编辑器的最后:

至此所以的功能介绍完毕了。

具体方法:

1:上传cfu的文件我是房子根目录下的

2:修改update.aspx文件的cs文件

    注意这个

SaveImages("UploadFiles/");
 if (Request.Files["Filedata"] != null)//判断是否有文件上传上来
        {
            SaveImages("UploadFiles/");
            //其他表单数据接收

            if (Request.QueryString["access2008_File_md5"] != null)
            {
                Response.Write("<br/>");
                Response.Write("MD5效验" + Request.QueryString["access2008_File_md5"]);
            }
            //Response.Write("<br/>");
            if (Request.Form["select"] != null || Request.Form["select2"] != null)
            {
                Response.Write("你选择的是<font color='#ff0000'>" + Request.Form["select"] + "</font>--<font color='#0000ff'>" + Request.Form["select2"] + "</font>");
            }
            Response.End();
        }
然后我修改了文件的上传部分,这个根据您的需要自己修改:

 private void SaveImages(string url)
    {
        ///'遍历File表单元素
        HttpFileCollection files = HttpContext.Current.Request.Files;

        ///'检查文件扩展名字
        //HttpPostedFile postedFile = files[iFile];
        HttpPostedFile postedFile = Request.Files["Filedata"]; //得到要上传文件
        string fileName, fileExtension, filesize, aspxUrl = "", new_filename = "";
        fileName = System.IO.Path.GetFileName(postedFile.FileName.ToString()); //得到文件名
        filesize = System.IO.Path.GetFileName(postedFile.ContentLength.ToString()); //得到文件大小
        if (fileName != "")
        {
            aspxUrl = Request.Path.Substring(0, Request.Path.LastIndexOf("/"));
            aspxUrl = aspxUrl.Substring(0, aspxUrl.LastIndexOf("/") + 1) + url + "image/" + DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo) + "/";

            String dirPath = System.Web.HttpContext.Current.Server.MapPath("../"+url) + "image/";
            String newDirPath = dirPath + DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo) + "/";
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
            if (!Directory.Exists(newDirPath))
            {
                Directory.CreateDirectory(newDirPath);
            }
            fileExtension = System.IO.Path.GetExtension(fileName);//获取扩展名
            new_filename = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExtension;
            //注意:可能要修改你的文件夹的匿名写入权限。
            postedFile.SaveAs(newDirPath + new_filename);

        }
        Response.Write("<p align='center'><img src='" + aspxUrl + new_filename + "' /></p>");
        //Response.Write(fileName + "上传成功");
    }
3:初始化js:

首先我将部分公用js放到一个js文件中


function challs_flash_onComplete(a)
function challs_flash_onCompleteData(a)
function challs_flash_onStart(a)
function challs_flash_onCompleteAll(a) 
function challs_flash_onSelectFile(a)
function challs_flash_deleteAllFiles()
function challs_flash_onError(a) 
function challs_flash_FormData(a)
function challs_flash_style()
var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
function thisMovie(movieName) 
4:修改js的参数设置,您也可以自己修改


function challs_flash_onComplete(a) { //每次上传完成调用的函数,并传入一个Object类型变量,包括刚上传文件的大小,名称,上传所用时间,文件类型
    var name = a.fileName; //获取上传文件名
    var size = a.fileSize; //获取上传文件大小,单位字节
    var time = a.updateTime; //获取上传所用时间 单位毫秒
    var type = a.fileType; //获取文件类型,在 Windows 上,此属性是文件扩展名。 在 Macintosh 上,此属性是由四个字符组成的文件类型
    //document.getElementById('show').innerHTML+=name+' --- '+size+'字节 ----文件类型:'+type+'--- 用时 '+(time/1000)+'秒<br><br>'
}

function challs_flash_onCompleteData(a) { //获取服务器反馈信息事件
    //document.getElementById('show').innerHTML += '<font color="#ff0000">服务器端反馈信息:</font><br />';
    document.getElementById('show').innerHTML += a;
}
function challs_flash_onStart(a) { //开始一个新的文件上传时事件,并传入一个Object类型变量,包括刚上传文件的大小,名称,类型
    var name = a.fileName; //获取上传文件名
    var size = a.fileSize; //获取上传文件大小,单位字节
    var type = a.fileType; //获取文件类型,在 Windows 上,此属性是文件扩展名。 在 Macintosh 上,此属性是由四个字符组成的文件类型
    //document.getElementById('show').innerHTML+=name+'开始上传!<br />';

    return true; //返回 false 时,组件将会停止上传
}

function challs_flash_onCompleteAll(a) { //上传文件列表全部上传完毕事件,参数 a 数值类型,返回上传失败的数量
    //document.getElementById('show').innerHTML+='<font color="#ff0000">所有文件上传完毕,</font>上传失败'+a+'个!<br />';
    //window.location.href='http://www.access2008.cn/update'; //传输完成后,跳转页面
}

function challs_flash_onSelectFile(a) { //用户选择文件完毕触发事件,参数 a 数值类型,返回等待上传文件数量
    //document.getElementById('show').innerHTML+='<font color="#ff0000">文件选择完成:</font>等待上传文件'+a+'个!<br />';
}

5:页面初始化cfu,在要使用cfu的页面添加一下初始化js,这个是我的设置,您也可以按照需求自己设置


a.url = "../pl_updalode/update.aspx";
这个路径最重要,要是把这个设置的不对就不能上传



function challs_flash_update() { //Flash 初始化函数
            var a = {};
            //定义变量为Object 类型

            a.title = "上传文件"; //设置组件头部名称

            a.FormName = "Filedata";
            //设置Form表单的文本域的Name属性

            a.url = "../pl_updalode/update.aspx";
            //设置服务器接收代码文件

            a.parameter = "bs=tyi&id=50";
            //设置提交参数,以GET形式提交

            a.typefile = ["Images (*.gif,*.png,*.jpg,*jpeg)", "*.gif;*.png;*.jpg;*.jpeg;", "GIF (*.gif)", "*.gif;", "PNG (*.png)", "*.png;", "JPEG (*.jpg,*.jpeg)", "*.jpg;*.jpeg;"];
            //设置可以上传文件 数组类型
            //"Images (*.gif,*.png,*.jpg)"为用户选择要上载的文件时可以看到的描述字符串,
            //"*.gif;*.png;*.jpg"为文件扩展名列表,其中列出用户选择要上载的文件时可以看到的 Windows 文件格式,以分号相隔
            //2个为一组,可以设置多组文件类型

            a.UpSize = 1;
            //可限制传输文件总容量,0或负数为不限制,单位MB

            a.fileNum = 0;
            //可限制待传文件的数量,0或负数为不限制

            a.size = 1;
            //上传单个文件限制大小,单位MB,可以填写小数类型

            //a.FormID = ['select', 'select2'];
            //设置每次上传时将注册了ID的表单数据以POST形式发送到服务器
            //需要设置的FORM表单中checkbox,text,textarea,radio,select项目的ID值,radio组只需要一个设置ID即可
            //参数为数组类型,注意使用此参数必须有 challs_flash_FormData() 函数支持

            a.autoClose = -1;
            //上传完成条目,将自动删除已完成的条目,值为延迟时间,以秒为单位,当值为 -1 时不会自动关闭,注意:当参数CompleteClose为false时无效

            a.CompleteClose = true;
            //设置为true时,上传完成的条目,将也可以取消删除条目,这样参数 UpSize 将失效, 默认为false

            a.repeatFile = true;
            //设置为true时,可以过滤用户已经选择的重复文件,否则可以让用户多次选择上传同一个文件,默认为false

            a.returnServer = true;
            //设置为true时,组件必须等到服务器有反馈值了才会进行下一个步骤,否则不会等待服务器返回值,直接进行下一步骤,默认为false

            a.MD5File = 0;
            //设置MD5文件签名模式,参数如下 ,注意:FLASH无法计算超过100M的文件,在无特殊需要时,请设置为0
            //0为关闭MD5计算签名
            //1为直接计算MD5签名后上传
            //2为计算签名,将签名提交服务器验证,在根据服务器反馈来执行上传或不上传
            //3为先提交文件基本信息,根据服务器反馈,执行MD5签名计算或直接上传,如果是要进行MD5计算,计算后,提交计算结果,在根据服务器反馈,来执行是否上传或不上传

            a.loadFileOrder = true;
            //选择的文件加载文件列表顺序,TRUE = 正序加载,FALSE = 倒序加载

            a.mixFileNum = 0;
            //至少选择的文件数量,设置这个将限制文件列表最少正常数量(包括等待上传和已经上传)为设置的数量,才能点击上传,0为不限制

            a.ListShowType = 1;
            //文件列表显示类型:1 = 传统列表显示,2 = 缩略图列表显示(适用于图片专用上传)

            a.InfoDownRight = "等待上传:%1%个  已上传:%2%个";
            //右下角统计信息的文本设置,文本中的 %1% = 等待上传数量的替换符号,%2% = 已经上传数量的替换符号

            a.TitleSwitch = true;
            //是否显示组件头部

            a.ForceFileNum = 0;
            //强制条目数量,已上传和待上传条目相加等于为设置的值(不包括上传失败的条目),否则不让上传, 0为不限制,设置限制后mixFileNum,autoClose和fileNum属性将无效!

            a.autoUpload = false;
            //设置为true时,用户选择文件后,直接开始上传,无需点击上传,默认为false;

            a.adjustOrder = true;
            //设置为true时,用户可以拖动列表,重新排列位置

            a.deleteAllShow = true;
            //设置是否显示,全部清除按钮

            return a;
            //返回Object
        }
6,调用插件:


.ke-icon-all_img
        {
            background-image: url("../kd_4/themes/default/all_img.png");
            width: 16px;
            height: 16px;
        }
//批量图片上传对kindedit对接部分
        KindEditor.lang({
            all_img: '批量图片上传'
        });
        KindEditor.plugin('all_img', function (K) {
            var self = this, name = 'all_img';
            self.clickToolbar(name, function () {

                var dialog = K.dialog({
                    width: 500,
                    title: '批量图片上传',
                    body: '<div><div id="show" style=" display:none;"> </div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="500" height="320" id="update" align="middle" style="padding:10px;"><param name="allowFullScreen" value="false" /><param name="allowScriptAccess" value="always" /><param name="movie" value="../pl_updalode/update.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="../pl_updalode/update.swf" quality="high" bgcolor="#ffffff" width="480" height="320" name="update" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></div> ',
                    closeBtn: {
                        name: '关闭',
                        click: function (e) {
                            dialog.remove();
                        }
                    },
                    yesBtn: {
                        name: '确定',
                        click: function (e) {
                            if (K('#show').html() == "") {
                                alert("您还没有上传文件!");
                            } else {
                                self.appendHtml(K('#show').html());
                                dialog.remove();
                            }
                        }
                    },
                    noBtn: {
                        name: '取消',
                        click: function (e) {
                            dialog.remove();
                        }
                    }
                });

            });
        });
这个这个掉用注意一个地方:

body部分主要这个swf的路径,根据不同页面的路径添切换


<param name="movie" value="../pl_updalode/update.swf" />
<embed src="../pl_updalode/update.swf" quality="high" bgcolor="#ffffff" width="480" height="320" name="update" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
这里设置swf的大小和路径等等

到此正就ok了!

我采用的方法比较笨!有需要的可以照做做做,高手可以改进!!!!

不喜欢的不要拍砖……

作者: 小浪子, 发布日期: 2012-04-01 15:04:37

值得鼓励。不过整合到里面不是很好看。

 

还是等4.1发布。看老大使用swfupload整合的了。呵呵。反正下版就是:4.1。。期待中。

回复
作者: 一页白纸, 发布日期: 2012-04-01 15:31:43

回复小浪子:

谢谢!最好期待他快点发布啊!这也是么办法啊!只能先凑活用用了!

回复
作者: 哈哈大侠, 发布日期: 2012-04-06 22:24:15
不错哈,不过这个是.net版本的,有没有.php和.asp的呢
回复
作者: 幻想, 发布日期: 2012-04-12 12:26:09

支持.NET

 

回复
作者: 张明, 发布日期: 2012-05-05 01:03:11
非常感谢分享,本地图片预览,这个好使,估计只有flash才能做到了。
回复
作者: 这蛋疼的名字, 发布日期: 2012-05-17 09:20:51

挺好的,我还试的整合来,没成功,这不等到4.1了。

回复
发表新帖 发表回复