• 用javascript从access数据库提取文件


    文章标题:用javascript从access数据库提取文件
    发布时间:2005年11月27日 晚
    文章作者:翟振凯 (小琦)
    交流方式:
    个人站:http://www.xiaoqi.net   
    技术站:http://www.iisvs.net
    商业站:http://www.iisvs.com
    交流站:http://www.tdqy.com

    QQ:53353866 22336848
    前言:
    为了鼓励共享精神,请尊重他人劳动成果,转载时,请不要去掉版权,谢谢合作。

    《不需要WScript.Shell权限,无组件在线打包,支持服务端解压缩及客户端解压缩的程序!!》
    这篇文章是我11月25日发布的,今天落伍的兄弟"Lukin"向我指出了这种程序在前一段时间就已经有人发布过了。
    并且他还提供了下载地址。
    我下载下来,看了一下,才知道他的原理和我的原理是一样的。只是客户端实现解包的方法不同。
    在此,我要先谢谢他,再继续下文。

    注:此方法完全是本人原创,在今天发布之前,也从来没有遇到过与这种方法相关的资料!

    ******************用JAVASCRIPT在客户端编程,是很有乐趣的***********************
    用javascript从access数据库提取文件
    一、原理
    1、用javascript在客户端通过ADODB.Connection建立与access数据库的连接,通过ADODB.Recordset打开数据库。
    2、在客户端利用Scripting.FileSystemObject组件检测要解包的文件夹是否存在,如果不存在,就创建文件夹。
    3、Adodb.Stream组件在客户端将数据流生成文件。

    二、实现

    CODE:
    数据库:
    表名:FL
    FileName:文件名
    FileData:二进制文件内容
    FilePath:文件路径
    以下是我写的客户端解包程序代码,大家把下面的代码保存为hta格式的文件即可!
    注:高版本的IE浏览器内不可以直接调用Adodb.Stream组件。

    CODE:
    <HTML>
    <HEAD>
    <TITLE> IISVS_文件解包工具 </TITLE>
    <meta name="description" content="作者:翟振凯,小琦">

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function get_files(filename,filePath) {//核心代码
    var o=new Date();
    var fso = new ActiveXObject("Scripting.FileSystemObject");

        //生成查询和更新用的sql语句。
        var sqlSelCnt = "SELECT * FROM [FL] ";

        //建立连接,并生成相关字符串。
        var con = new ActiveXObject("ADODB.Connection");
        con.Provider = "Microsoft.Jet.OLEDB.4.0";
        con.ConnectionString = "Data Source=" + filename;
        con.open;
        var rs = new ActiveXObject("ADODB.Recordset");
        rs.open(sqlSelCnt,con);
       
       while (!rs.eof) {
            var path2 = filePath + rs.Fields("FilePath") ;
            var path3 = path2 + rs.Fields("FileName");

            var fsize = rs.Fields("Filedata").ActualSize;
    Create_dir(filePath,rs.Fields("FilePath"));//创建文件夹函数   
       
    if (fsize!=0){   //如果文件大小不为0,也就是说,非文件夹

    if (fso.FileExists(path3)==false){//检测文件是否存在,如不存在就创建文件

    var adodbStream = new ActiveXObject("ADODB.Stream");
    adodbStream.Type =1//以二进制模式打开
    adodbStream.Open();
    adodbStream.write(rs.Fields("Filedata").GetChunk(fsize));          
    adodbStream.SaveToFile(path3,2);       
    adodbStream.Close();
    adodbStream=null;

    }
    }
            rs.moveNext;
        }
       
        rs.close();
        rs = null;
        con.close();
        con = null;
                   
    alert("解压完成!用时"+(new Date()-o)/1000+"毫秒");   
    }

    function Create_dir(filePath,dir){//创建文件夹函数
    tt.value=dir
    dir=tt.value
    var fso = new ActiveXObject("Scripting.FileSystemObject");
      var dir2=""
      sTrArr2=dir.split("\\")   
            for (var k=0;k<sTrArr2.length; k++){
       
            if(sTrArr2[k]!=undefined){
            
            if (fso.FolderExists((filePath+dir2))==false) fso.CreateFolder((filePath+dir2));//检测文件夹是否存在
            dir2+=sTrArr2[k]+"\\"
                                  
                }
            }
    }


    function iv(inp,act)//取到数据库所在路径
    {
            iDot = inp.lastIndexOf('\\');
            if(iDot>-1) dir = inp.substr(iDot+1).toLowerCase();
            show1.innerHTML =inp
            show2.innerHTML =inp.substring(0, iDot+1)//取到数据库所在路径
            if (act==1) get_files(inp,inp.substring(0, iDot+1));
    }
    //-->
    </SCRIPT>
    </HEAD>

    <BODY>
    <input name=tt id=tt value="" type="hidden">

    解包文件地址:<div id="show1"></div><br>
    解包文件所在文件夹:<div id="show2"></div>
    选择要解包的文件:<input type="file" id=ph onpropertychange="iv(this.value,0)"/> <input type="submit" value="解包" name="B1" onclick="iv(ph.value,1)"></BODY>
    </HTML>
    相信大家看完,一定会感觉此方法技术含量不大,但我感觉此方法的确很有实用价值!

    有些时候,点子要比技术更加重要。用最简单的技术,实现最有价值的功能,是我不懈的追求,也是我到目前还没有放弃ASP编程的一个原因。
  • 相关阅读:
    安装部署Python开发环境
    CentOS系统常见优化
    chm文件打开无法显示
    数据库恢复技术
    视图的认识
    存储过程的认识
    error C2471: 无法更新程序数据库 ,fatal error C1083: 无法打开程序数据库文件
    ubuntu下使用aptget install下载安装文件管理
    转:[译文] 程序员的禅修之路
    数据库的两段锁协议
  • 原文地址:https://www.cnblogs.com/MaxIE/p/338189.html
Copyright © 2020-2023  润新知