我现在正在做一个系统,其中有一个模块是管理文件的(如WORD)现在想做的是,如果是1M以下的文档我可以用流的形式存到数据库中,再用OLE掉用,此功能已经实现了,现在出现大文档像几M,几十M的文档这样在数据库中查询出来就非常慢,现在想考虑的是怎么样能把文档从客户端存到服务器上,在查询时也可以直接从服务器上打开文档开查询。请高手帮忙

解决方案 »

  1.   

    楼主知道http://www.xxxx.xxx/word.doc这样的浏览方式吗?
    CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com
      

  2.   

    我的系统是CS结构的不是BS的不能用网页打开啊,如果楼上的有什么高见可以沟通一下,
    分不够可以再加。
      

  3.   

    lxbsweet(一锤子砸下去不就完了嘛?!) 
    二进制流的方式我知道怎么做上传文件是没有问题但是如果有1000个几个M的文档你查询的时候会怎么样?打开文档的时间会多慢?
      

  4.   

    如果是在局域网建立共享直接copyfile就行了啊,至于管理在本地管理和查询,然后直接从服务器上打开啊。
      

  5.   

    地區:北京
    年限:2年
    技術:.Net BS开发
    工資:avg>>5K + 福利,几乎不加班,工作开心,心情愉快。
    公司性質:汽车门户网站。 PS: 透露点消息,我们公司正在招.net BS开发人员,如果哪位同仁想换工作,是一个不错的机会选择,加[email protected] 说应聘即可!
      

  6.   

    地區:北京
    年限:2年
    技術:.Net BS开发
    工資:avg>>5K + 福利,几乎不加班,工作开心,心情愉快。
    公司性質:汽车门户网站。 PS: 透露点消息,我们公司正在招.net BS开发人员,如果哪位同仁想换工作,是一个不错的机会选择,加[email protected] 说应聘即可!
      

  7.   

    对于大型文件来说,一般不主张直接存放在数据库中,原因有多,最主要的是它占用太多的数据库资源,查询,修改起来了,比较慢。比较常用的方式,用ftp 服务器,或其它的文件共享方式。数据库中只存放其摘要信息和,存放的真实地址。在用户需要打开的时候,再去打开相应的数据。
    如果非要存放在数据库中,也不要和业务表直接存放在一起。而是做放在单独的一个table中。用户需要时在打开数据,默认的时候不打开!
      

  8.   

    楼主还没有明白吗?
    最简单的办法就是文件共享方式。
    如果可以共享服务器的某一个目录sharedoc就可以直接copyfile实现,比如:
      if copyfile('d:\a.txt','\\192.168.0.151\sharedoc\a.txt',false) then
      begin
        sleep(1000);
        winexec('notepad.exe \\192.168.0.151\a\c.txt',sw_show);
      end;
    举个例子而已,但对于查询和管理在本地操作,比如数据库仅仅存储文件路径和文件名等等如果不能共享就要实现文件上传了。
      

  9.   

    我试了一下在本机好使远程好像不行啊。怎么办啊?
    COPYFILE和WINEXEC都 不好使。
      

  10.   

    既然是C/S结构就好办了:
    1、将文件保存在服务器端的目录中
    2、在服务器端数据库中保存文件的索引信息(主要是文件名和路径等)
    3、客户端和服务端通过Socket传输文件(二进制)
    这样在数据库中查询某一个文档就会很快,查到后再读取文档,通过Socket传到客户端,客户端接收完整后再用Word打开。当客户端通过Socket上传文件时,服务端接收文件后保存到本地目录,并在数据库中添加索引信息。
      

  11.   

    >>我试了一下在本机好使远程好像不行啊。怎么办啊?COPYFILE和WINEXEC都 不好使。远程必须给你开一个共享才可以,和在本地操作一样,只不过在处理路径的时候加上
    \\远程计算机名或ip\共享文件夹名称\具体文件
      

  12.   

    要想快一点,可以用压缩控件将文件流压缩一下,然后上传,打开的时候再解压即可,
    10M的DOC文件通过RAR模式压缩一般在1M之内Delphi本身就有自带的压缩控件(ZLib),可以试一下,这样你几乎不用改什么东西,只是在上传下载流的时候加一步压缩或解压即可。当然文件太多了以后不建议使用此方法,主要是太慢了,对数据库服务器要求太高,随随便便几个数十个文件后数据库文件都以G论,而且除了这些后数据库可能也就是数十M而已。
      

  13.   

    TO:MoxiJun() 具体方法呢?
    用copyfile这个函数不行。因为要向服务器登录和用用户名和密码的
    用映射就没问题。
      

  14.   

    还有用WinExec是打开执行文件的,而不是WORD文档啊。
      

  15.   

    你只需要在你的服务器上开一个FTP服务器 ,然后利用文件传输的方式来使用。