应该也要用到stream,但具体的实现请高手明示

解决方案 »

  1.   

    参考
    http://www.knowsky.com/1342.html在ASP中可以先将WORD数据以字节流方式取出,接着 将其conntenttype属性标记为Application/msword,再将它发送给客户机,客户 机收到这个资源后,根据其MIME类型,会自动调用客户机上的Word
      

  2.   

    TADOBlobStream(ADOTable1.FieldByName('FldWord')).LoadFormFile('Word文件的路径')
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     fileMS:Tmemorystream;begin
    filems:=Tmemorystream.create;
    filems.LoadFromFile('1.doc');
    fileMS.Position :=0;
    ADOTable1.Insert;
    TBlobField(ADOTable1.FieldByName('file')).LoadFromStream(fileMS);
    ADOTable1.Post; 
    fileMS.Free ;  end;这样存储TXT是没问题的
    存word变成乱码是一定的,但长度明显不够,用下面的方式读出来再写到文件里得到的不是原来的内容
    procedure TForm1.Button2Click(Sender: TObject);
    var
     wordfileload:Tfilestream;
    begin
     adotable1.First;
     TBlobField(ADOTable1.FieldByName('file')).SaveToFile('2.doc'); 
    end;
      

  4.   

    xinshiji(无名) ( ) :
    我觉得读出来再转换成word肯定比较麻烦
    不知有没有可用的例子
      

  5.   

    参考如下代码:
       if OpenDialog1.Execute then
          Begin
             Tempstr:=OpenDialog1.Files[0];
             if DataSource1.DataSet.state=dsbrowse then DataSource1.DataSet.Edit;
             DataSource1.DataSet.fieldbyname('FileName').asString:=ExtractFileName(tempstr);
             DataSource1.DataSet.fieldbyname('FileContent').asString:=BlobContentToString(tempstr);
          End;
    Function BlobContentToString(const FileName:String):String;
       begin
          with TFileStream.create(FileName,fmOpenRead) do begin
            try
                setlength(result,Size);
                read(Pointer(Result)^,size);
            finally
                free;
            end;
          end;
       end;该代码不管数据库是ACCESS还是SQLSERVER数据库都可顺利处理!也不管文件是什么格式。
      

  6.   

    关键的一点是word文件对应的类型是什么?
    我看过存取jpeg的
    jpeg对应的文件类型是Tjpegimage,word文件对应的类型请高手明示,我觉得用二进制是明显的,但拿不到word文件的类型,二进制就不能转换出来
      

  7.   

    TO:shxhark(泉)  多谢。
    关键代码如下uses
    OleCtnrs;type
    TForm1 = class(TForm)
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    OleContainer1: TOleContainer;
    procedure Button3Click(Sender: TObject);
                      procedure Button4Click(Sender: TObject);procedure TForm1.Button3Click(Sender: TObject);
    var
    tempstr:string;
    function BlobContentTostring(const Filename:string):string;
    begin   
    with Tfilestream.Create(filename,fmopenread)  do  
    try    
    setlength(result,size);   
    read(pointer(result)^,size);   
    finally     
    free;   
    end;    
    end;
    begin
     if OpenDialog1.Execute then
    Begin
     Tempstr:=OpenDialog1.Files[0];
     adotable1.Edit;
     adotable1.fieldbyname('FileName').asString:=ExtractFileName(tempstr);
     adotable1.fieldbyname('FileContent').asString:=BlobContentToString(tempstr);
    End;
    end;procedure TForm1.Button4Click(Sender: TObject);
    var  
    sfilename:string;  
    bs:Tadoblobstream;  
    begin    
    bs:=Tadoblobstream.Create(TBLOBfield(adotable1.FieldByName('FileContent')),bmread);
    try 
    sfilename:=extractfilepath(application.ExeName)+trim(adotable1.fieldbyname('filename').AsString);
    sfilename:=sfilename+'.'+'doc';  
    bs.SaveToFile(sfilename);  
    try             
    //djhyopenform:=Tdjhyopenform.Create(self);
    form1.olecontainer1.CreateObjectFromFile(sfilename,false);
    form1.OleContainer1.Iconic:=true;  
    //djhyopenform.ShowModal;     
    finally          
    //djhyopenform.Free;     
    end;       
    finally     
    bs.free;   
    end;    
    end;