delphi 上传图片的问题
我碰到这样的情况。做单个上传图片可以成功,做单个显示图片也可以成功,但是同时做上传在显示图片就出现下面图片的错误。我是根据跟踪调试,我不知道什么原因请各位大哥帮忙看看
//添加图片
procedure TForm1.Button3Click(Sender: TObject);
var
F:File of Byte;
size:Longint;//文件大小
FilePath,time:string;//文件时间
begin
if not OpenDialog1.Execute then Exit; //从本机上获取图片
FilePath := OpenDialog1.FileName;
AssignFile(F,FilePath);
reset(F);
size := Filesize(F);//获取文件大小
time := DatetimetoStr(FileDateToDateTime(FileAge(FilePath)));//获取文件创建时间
closefile(F);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from T_B_Picture');
ADOQuery1.Open;
ADOQuery1.Insert;
ADOQuery1.FieldByName('FileName').AsString := ExtractFileName(FilePath);//储存文件名
ADOQuery1.FieldByName('FileKind').AsString := ExtractFileExt(FilePath);//储存文件扩展名
ADOQuery1.FieldByName('FileSize').AsInteger := size;//储存文件的大小
ADOQuery1.FieldByName('FileTime').AsString := time;//储存文件的创建时间
ADOQuery1.FieldByName('SaveTime').AsDateTime := now();//存取文件的储存时间
TBlobField(ADOQuery1.FieldByName('FileContent')).LoadFromFile(FilePath);
ADOQuery1.Post;
//////////////////显示刚上传的图片///////////////
ShowPhoto(FilePath)
end;
//显示图片
function TForm1.ShowPhoto(sFile: string):TImage;
var
Ms:TStream;
jpg:Tjpegimage;
begin
Adoquery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from T_B_Picture where FileName = '''+ sFile + '''');
ADOQuery1.Open;
Ms:=TStream.Create;
MS:=ADOQuery1.CreateBlobStream(ADOQuery1.FieldbyName('FileContent'),bmRead);
Ms.Position :=0;
jpg:=Tjpegimage.Create;
Jpg.LoadFromStream(Ms);
Image1.Picture.Assign(Jpg);
jpg.Free;
MS.Free;
end;
追问:你说错了,我是按数据库以二进制流存进数据库。在查找出来,不是按你说的带路径的文件名查询的