首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi将图片保存至Sql Server中的小疑点

2012-02-25 
Delphi将图片保存至Sql Server中的小问题?怎么限制保存图片的大小呢?比如说超过500K的图片就不允许提交。否

Delphi将图片保存至Sql Server中的小问题?
怎么限制保存图片的大小呢?比如说超过500K的图片就不允许提交。否则数据库太大了,读取也慢。保存图片代码如下,怎么改一下?:
//保存图片
procedure TForm1.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute then
  img1.Picture.LoadFromFile(dlgOpen1.FileName);
  qry1.Append;
  qry1.Post;
end;
//提前之前将图片转换为数据流
procedure TForm1.qry1BeforePost(DataSet: TDataSet);
var
  ms: TMemoryStream;
  jpg: TJpegImage;
begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;
  try
  if img1.Picture.Graphic<>nil then
  begin
  try
  img1.Picture.Graphic.SaveToStream(ms);
  finally
  TBlobField(qry1.FieldByName('pic')).LoadFromStream(ms);
  end;
  end;
  finally
  jpg.Free;
  ms.Free;
  end;
end;

[解决办法]
if ms.Size > 500k then
弹一个提示框
[解决办法]
简单点改

Delphi(Pascal) code
procedure TForm1.qry1BeforePost(DataSet: TDataSet);var  ms: TMemoryStream;  jpg: TJpegImage;begin  ms := TMemoryStream.Create;  jpg := TJpegImage.Create;  try    if img1.Picture.Graphic <>nil then      begin        try          img1.Picture.Graphic.SaveToStream(ms);//add                    if ms.size>1024*500 then          begin            //do something          end          else            //save to database//add        finally          TBlobField(qry1.FieldByName('pic')).LoadFromStream(ms);        end;      end;  finally    jpg.Free;    ms.Free;  end;end; 

热点排行