应该也要用到stream,但具体的实现请高手明示
解决方案 »
- 一个TreeView控件的和数据库的连接问题
- 程序与人生函数大家快来看
- Pchar 字符串相加怎么加?
- 我N年没有提过问题了..我决定提个无聊的问题
- 为什么注册ActiveX控件失败??
- 求助!谁有TExtraDevices for Report Builder 6.0 (d6)???
- 使用delphi的BDE连oracle,出现问题,各位帮忙看一下
- 可不可以用delphi来写木马程序呀?
- 统计:这里有多少人做过做过共享软件,而且靠这赚到过钱的?
- 寻找洛阳Delphi程序员
- 如何在JSP或用javascript调用delphi里定义的事件,请高手指教,肯定不会亏待!!!!
- 关于suipack 开发MDI界面闪烁的问题,请大侠指教!!
http://www.knowsky.com/1342.html在ASP中可以先将WORD数据以字节流方式取出,接着 将其conntenttype属性标记为Application/msword,再将它发送给客户机,客户 机收到这个资源后,根据其MIME类型,会自动调用客户机上的Word
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;
我觉得读出来再转换成word肯定比较麻烦
不知有没有可用的例子
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数据库都可顺利处理!也不管文件是什么格式。
我看过存取jpeg的
jpeg对应的文件类型是Tjpegimage,word文件对应的类型请高手明示,我觉得用二进制是明显的,但拿不到word文件的类型,二进制就不能转换出来
关键代码如下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;