用流的压缩和解压缩技术,将压缩后的流存入数据库就行了,还可以选择压缩比
压缩
procedure ys_stream(instream, outStream: TStream; ysbz: integer);
{
instream: 待压缩的已加密文件流
outStream 压缩后输出文件流
ysbz:压缩标准
}
var
ys: TCompressionStream;
begin
//流指针指向头部
inStream.Position := 0;
//压缩标准的选择
case ysbz of
1: ys := TCompressionStream.Create(clnone, OutStream); //不压缩
2: ys := TCompressionStream.Create(clFastest, OutStream); //快速压缩
3: ys := TCompressionStream.Create(cldefault, OutStream); //标准压缩
4: ys := TCompressionStream.Create(clmax, OutStream); //最大压缩
else
ys := TCompressionStream.Create(clFastest, OutStream);
end;
try
//压缩流
ys.CopyFrom(inStream, 0);
finally
ys.Free;
end;
end;
解压缩
procedure TForm1.jy_Stream(instream, outStream: TStream);
{
instream :原压缩流文件
outStream:解压后流文件
}
var
jyl: TDeCompressionStream;
buf: array[1..512] of byte;
sjread: integer;
begin
inStream.Position := 0;
jyl := TDeCompressionStream.Create(inStream);
try
repeat
//读入实际大小
sjRead := jyl.Read(buf, sizeof(buf));
if sjread > 0 then
OutStream.Write(buf, sjRead);
until (sjRead = 0);
finally
jyl.Free;
end;
end;