WEB开发网
开发学院网页设计JavaScript Jquery基于ActiveX的批量上传 阅读

Jquery基于ActiveX的批量上传

 2010-01-08 00:00:00 来源:WEB开发网   
核心提示: 改造好之后已经可以实现这样的功能:传入一个盘符号,会列出所有该盘符的所有文件夹,Jquery基于ActiveX的批量上传(5),继续点击会继续列出相应文件夹的子文件夹(和windows文件效果类似),接下来要实现上传,//选择完成后确定按钮事件functionselectconfirm(){va

改造好之后已经可以实现这样的功能:传入一个盘符号,会列出所有该盘符的所有文件夹,继续点击会继续列出相应文件夹的子文件夹(和windows文件效果类似)。

接下来要实现上传。没有控件就不能直接接受file,又不能接收路径查找文件,那么只能把文件整个传到服务器端。思路是将文件转成 base64流,再通过ajax传到服务器端(这里要用到另一个插件MSXML2.DOMDocument),然后服务器端 Request.InputStream接收,然后用XML处理这个流,之后base64解码,然后继续你的上传流程就可以了。

//选择完成后确定按钮事件
        function selectconfirm()
        {
            var localpath = $("#inputpath").val();
            var leaving = $("#LblYue").text();
            var tj = $("#chkIsTj").attr("checked") == true ? "1" : "0";
            $("#input2").show();
            $("#hidinput").val("1");
            upload(localpath, leaving, tj);
        }
    
    
        //上传和文件夹操作
        function upload(localpath, leaving, tj)
        {
            var fso, f, fc, a;
            fso = new ActiveXObject("Scripting.FileSystemObject");
            f = fso.GetFolder(localpath);
            if (!fso.FolderExists(localpath + "\\Success"))
            {
                fso.CreateFolder(localpath + "\\Success");
            }
            if (!fso.FolderExists(localpath + "\\Fail"))
            {
                fso.CreateFolder(localpath + "\\Fail");
            }
            ff = new Enumerator(f.files);
            for (; !ff.atEnd(); ff.moveNext())//枚举所有文件   
            {
                s = ff.item();   //取文件对象
                alert(s);
                uptowebmethod(s.Path, leaving, tj, f.Path, localpath);
            }
        }
        
        //文件->流->XML->ajax传入后台
        function uptowebmethod(path, leave, istj, fpath, localpath)
        {
            var ado_stream = new ActiveXObject("ADODB.Stream");
            var xml_dom = createXMLDOM();
            xml_dom.loadXML('<?xml   version="1.0" ?><root/>');
            xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes");
            var l_node1 = xml_dom.createElement("photo");
            l_node1.dataType = "bin.base64";
            ado_stream.Type = 1;   //   1=adTypeBinary     
            ado_stream.Open();
            ado_stream.LoadFromFile(path);
            l_node1.nodeTypedValue = ado_stream.Read(-1);   //   -1=adReadAll   
            ado_stream.Close();
            xml_dom.documentElement.appendChild(l_node1);
            var pnode = xml_dom.createElement("path");
            xml_dom.documentElement.appendChild(pnode);
            pnode.text = path;
            var lnode = xml_dom.createElement("leave");
            xml_dom.documentElement.appendChild(lnode);
            lnode.text = leave;
            var tjnode = xml_dom.createElement("istj");
            xml_dom.documentElement.appendChild(tjnode);
            tjnode.text = istj;
            var fnode = xml_dom.createElement("fpath");
            xml_dom.documentElement.appendChild(fnode);
            fnode.text = fpath;

            $.ajax({
                type: "POST",   //访问WebService使用Post方式请求
                //contentType: "application/json", //WebService 会返回Json类型
                url: "AjaxForm1.aspx", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
                processData: false,
                data: xml_dom,    //这里是要传递的参数,格式为 data: "{paraName:paraValue}",下面将会看到
                //dataType: 'json',
                success: function(result)
                {     //回调函数,result,返回值
                    if (result == '0')
                    {
                        s.move(localpath + "\\Fail\\" + s.name);
                    }
                    else if (data == '1')
                    {
                        s.move(localpath + "\\Success\\" + s.name);
                    }
                    else
                    {
                        alert(result);
                    }
                }
            })
        }
        //创建XMLDOM
        function createXMLDOM()
        {
            var arr = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom"];
            for (var i = 0; i < arr.length; i++)
            {
                try
                {
                    var xmlDom = new ActiveXObject(arr[i]);
                    return xmlDom;
                }
                catch (oError)
                {
                    alert("error");
                }
            }
            throw new Error("MSXML is not install on your system.");
        }

上一页  1 2 3 4 5 6  下一页

Tags:Jquery 基于 ActiveX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接