在blob中存大图片的问题(200分)

  • 主题发起人 主题发起人 mbobo
  • 开始时间 开始时间
M

mbobo

Unregistered / Unconfirmed
GUEST, unregistred user!
help me
我在long raw的字段中用ole把word和图片放入;
放word 和小点的土图片没问题,可放大的图片就
出错,大概是长度不和。。。
my god ..哪位大虾帮一下200分奉上。。。
感激不尽
 
如你用bde的话把blob size 该成64试一试
 
使用UNZIP控件存之前ZIP,用之前UNZIP
控件在很多SITE都能找到
 
好象即使修改BDE中的BLOB SIZE也不行,用QUERY进行存取时,最大只支持64K。
但是,若你使用TTABLE构件,则大小就没有限制了,至少我试过10M的文件存取,
没有碰到问题,但是同样的方法,用TQUERY就最大只能到64K了。

 
用LoadFromFile/LoadFromClipboard就没有问题
 
if OpenDialog1.Execute then
begin
if OpenDialog1.FileName = '' then Exit;
FileName := OpenDialog1.FileName;
Mem := TMemoryStream.Create;
Mem.LoadFromFile(FileName);
Mem.Seek(0,soFromBeginning);
Query1.Close;
Query1.DatabaseName := 'D:/BLOB';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO BLOBNAME(NAME,FILENAMES) VALUES(:NAME,:FILENAMES)');
Query1.ParamByName('Name').AsString := FileName;
Query1.ParamByName('FileNAMES').LoadFromStream(Mem,ftBlob);
Query1.ExecSQL;
Mem.Free;
end;
 
我想用存储过程来做行不行。。。。。
 
没人理我了吗。。。
 
你试过用压缩的方法来解决吗?
 
不行,有时图片太大,压缩也不能解决问题。。
 
yck说的不行吗?
 
我用r_baggio的方法解决了。。。谢谢
 
<html>
<body>
<h2>
其实有另外的一种方法,你可以把图片存成文件的格式(.jpg/.bmp),然后把文件的
路径存放在数据库中,这样就可以绕开大小的问题,而且查询、显示的速度明显加快。
</h2>
</body>
</html>

 

procedure TForm1.Button1Click(Sender: TObject);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
begin
MyFile:=Tfilestream.create('c:/1.doc',fmopenread);
with table1 do
begin
Open;
insert;
Stream := TBlobStream.Create(FieldByName('content') as TBlobField, bmWrite);{‘Doc’为BLOB字段名}
MemSize := MyFile.Size;
Inc(MemSize); {Make room for the buffer's null terminator.}
Buffer := AllocMem(MemSize); {Allocate the memory.}
try
Stream.Seek(0, soFromBeginning); {Seek 0 bytes from the stream's end point}
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
try
Post;
except
on E: EDatabaseError do
{ if HandelException(E)<>0 then
exit
else
raise;
end;
exit; }
end;

Doc_ole.CreateObjectFromFile('c:/1.doc',False);
Doc_ole.Run;{Doc_ole为ToleContainer构件名}
end;
 
用ADO不会有此问题
或在BDE Administrator中将BlobSize设置为足够大。
 
多人接受答案了。
 
后退
顶部