文件为PDF格式,少则30 40页,多则400 500页,份数为20W左右
个人没有什么好的办法将文件存入数据库
现在初步决定弄一台文件服务器,在客服端指定文件,复制到服务器相应的文件夹
然后在数据库建立索引,存放文件路径
由于没有做过这方面得东西,不知道在做的过程中有没有什么难点需要注意
还有不知道大家对这类问题有没有好的解决方法
请大家多多指教,先行谢过。

解决方案 »

  1.   

    客户端先导到XML里面,然后传到服务器,再通过数据转换到数据库里面,建立索引。
    DELPHI 技术大全,明日科技出的书里面有一个例子的。你可以查一下资料。
      

  2.   

    将文件复制到服务器资料夹,透过管理路径和文件名亦可
    将文件存入SQL SERVER<2008 FileStream建议>,能更灵活控制安全性
    若以每个文件10M计,预计3T空间,呵呵,仔细规划好
      

  3.   

    用SQL SERVER 2008 FileStream
      

  4.   

    两种方式:
    1、传送文件到服务器保存,数据库保存数据库的存储路径
    2、文件直接保存到数据库的大数据image字段。
      

  5.   

    可以采取文件服务器和数据库服务器分开的方法。
    文件服务器可以采用常规的FTP,而数据库服务器可以存放ftp用户密码做权限,以及用FTP地址和Ftp文件相对路径做文件检索,这样可以分担文件服务器的存储压力
      

  6.   

    如果采用FTP那么什么文件服务器上的物理驱动盘没关系,你只要了解FTP指令就可以了,其他的交给FTP服务器来完成,如创建虚拟目录映射等
      

  7.   


    procedure TKeyinForm.BitBtn4Click(Sender: TObject);
    Var
      TDate,OldFile,NewFile:String;
    begin
      TDate:=FormatDateTime('YYYYMMDD',Now);
      OldFile:='Edit1.Text';   //?      
      NewFile:='\\192.168.1.1\Temporary\CRS\'+TDate; //?
      //红色部分这个地方该怎么写?
      if not FileExists('\\192.168.1.1\Temporary\CRS\'+TDate) then
        begin
          CreateDirectory(PChar('\\192.168.1.1\Temporary\CRS\'+TDate),nil);
          CopyFile(PChar(OldFile),PChar(NewFile),False);
        end
      else
          CopyFile(PChar(OldFile),PChar(NewFile),False);
    end;
      

  8.   

    路径可以用ini文件保存,类似:
    [pdffile]
    fileserver = 192.168.0.1
    filepath = \temporary\grs
    在代码中将ini文件的相关信息读出来赋给一个Tstring。这样会灵活点,。如果把路径存到数据库,fileserver的地址改了,难道你要把所有的字段值都改一次?
      

  9.   

    整个目录复制?copyfile好像不支持
    直接调用一个外部命令:cmd /c copy ... ...
      

  10.   

    function File_Action(fFROM, fTO: string; Action: integer): boolean;
    //对文件进行操作
    var
        FData: TShFileOpStruct;
    begin
        fillchar(FData, sizeof(TShFileOpStruct), 0);
        Fdata.pFrom := PChar(fFrom + #0#0);
      //设立数据源路径和文件、目录名,支(?,*通配符)
        fdata.pTo := PChar(fTo + #0#0); //设立目标路径
        case Action of
            0: fdata.wFunc := FO_COPY; //copy
            1: fdata.wFunc := FO_MOVE; //move
            2: fdata.wFunc := FO_DELETE; //delete
            3: fdata.wFunc := FO_RENAME; //rename
        else
            fdata.wFunc := FO_COPY;
        end;
        fData.fFlags := FOF_ALLOWUNDO; //设定操作选 项
        fData.fAnyOperationsAborted := false;
        fData.hNameMappings := nil;
        case Action of
            0: fData.lpszProgressTitle := '复制文件'; //copy
            1: fData.lpszProgressTitle := '移动文件'; //move
            2: fData.lpszProgressTitle := '删除文件'; //delete
            3: fData.lpszProgressTitle := '重命名'; //rename
        end;
        result := ShFileOperation(FData) = 0;
    end;
      

  11.   

    如果采用共享文件夹可以采用映射网络驱动器,就相当于本地文件了
    但是共享文件夹我曾经遇见过一种情况网络正常,但是不知道为什么有时候访问共享文件夹居然会超时30秒以上,这个问题我一直困扰了我很久,起先还以为程序有问题,结果是共享问题,因此后来一直放弃使用这种方式,因此我还是建议使用FTP,至少可以在网络正常情况下稳定传输,而且可以后台执行甚至断点续传
      

  12.   

    回sz_haitao 是复制单个文件,copyfile应该是可以的谢谢somemak提醒,路径用ini文件保存是个不错的方法,另外共享目录读写的权限都有,应该是代码有问题谢谢IDWB,我也知道现在的做法在很多方面都存在问题,但是时间有限,近期要交差,还有就是水平有限,
    对FTP,网络传输方面一窍不通,你以前也做过这方面的东西,能否给一份DEMO学习一下?