如何将*.jpg格式的图片文件保存到数据库中。

解决方案 »

  1.   

    var
      Mem: TMemoryStream;
      Jpg: TJpegImage;
    begin
      mem:=TMemoryStream.Create;
      Jpg:=TJpegImage.Create;
      TBlobField(query1.Fields[n]).SaveToStream(mem);
      Jpg.LoadFromStream(mem);
      image1.picture.Bitmap.Assign(Jpg);
      mem.Free;
      Jpg.Free;
    end;
      

  2.   

    这个就可以
     uses Jpeg;
    procedure Tform1.Db_Addpic(sender:Tobject);
    var
     PicName,Ext:string;
     JpegImage:TJpegImage;
    begin
      if openpicturedialog1.execute then
        begin
          DB_PIC.append;
          PicName:=openpictureDialog1.Filename;
          Ext:=ExtractFileExt(PicName);
          if UpperCase(ExtName)='.BMP' then
             begin
                //直接存入数据库
             end
          else if (UpperCase(ExtName)='.JPG') or (UpperCase(ExtName)='.JPEG') then
              begin
                JPEgImage:=TJpegImage.create;
                try
                  JpegImage.LoadfromFile(PicName);
                  DB_PIC.Picture.Graphic.Assign(JpegImage);
                  DB_Pic.Post;
                Finally
                  JpegImage.free;
                end;
              end;
           end;
     end;  
      

  3.   

    Query1.FieldByName('JpgFileName').Assign(Image1.Picture);
      

  4.   

    我试了几次都不能将*.jpg文件存入数据库,但*.bmp格式可以,请高手帮忙.
      

  5.   

    可以给你提供一个ACCSSE例子,需要请发消息
      

  6.   

    上次给朋友发过一个,有BUG,现已修正
      

  7.   

    我支持 comanche(太可怕) 不要设字段类型为 Graphic 的說法,只要記錄記下图片文件位置名稱就成了 如: C:\photo\123.jpg圖片多大也沒問題的!!
      

  8.   

    我的方法可以把任何文件存入数据库中。
    数据库:SQL Server。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Fs:TFileStream;
      tmp:TStream;
      F:File of Byte;
      size:Longint; //文件大小
      time:string;  //文件时间
    begin
    if opendialog1.Execute then
     begin
       AssignFile(F,opendialog1.FileName);
       reset(F);
       size:=Filesize(F);//获取文件大小。
       time:=DatetimetoStr(FileDateToDateTime(FileAge(opendialog1.FileName)));//获取文件创建时间。
       closefile(F);  //关闭打开的文件。
       Fs:=TFileStream.Create(pchar(opendialog1.FileName), fmOpenRead or fmShareDenyWrite);
       adoquery1.Close;
       adoquery1.SQL.Clear;
       adoquery1.SQL.Add('select * from File_Tab');
       adoquery1.Open;
       adoquery1.Insert;
       adoquery1.FieldByName('FileName').AsString:=ExtractFileName(opendialog1.FileName);  //存储文件名称
       adoquery1.FieldByName('FileKind').AsString:=ExtractFileExt(opendialog1.FileName);   //存储文件扩展名。
       adoquery1.FieldByName('FileSize').AsInteger:=size;    //存储文件的大小。
       adoquery1.FieldByName('FileTime').AsString:=time;     //存储文件的创建时间。
       adoquery1.FieldByName('SaveTime').AsDateTime:=now();    //该文件存入库的时间。
       Tmp:=adoquery1.CreateBlobStream(adoquery1.FieldByName('FileContent'),bmReadWrite);  //把整个文件以二进制的形式存入数据库。
       Tmp.CopyFrom(fs, 0);
       Tmp.free;
       adoquery1.Post;
       fs.Free;
     end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      Fs:tmemorystream;
      tmp:TStream;
    begin
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('select * from File_Tab');
        adoquery1.Open;
        adoquery1.First;      //这里以保存第一条记录为例。
        savedialog1.FileName:=adoquery1.FieldValues['FileName']; //以原文件的文件名进行保存。
    if savedialog1.Execute then
     begin
      Fs :=tmemorystream.Create;
      begin
        Tmp:=adoquery1.CreateBlobStream(adoquery1.FieldByName('FileContent'), bmRead);
        Fs.CopyFrom(Tmp,Tmp.Size);
        if FileExists(savedialog1.FileName) then
         begin
           if application.MessageBox('该文件已存在,是否替换?','信息提示',MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdYes then
             begin
              fs.SaveToFile(pchar(savedialog1.FileName));
              application.MessageBox('文件保存成功!','信息确认',MB_OK);
             end
           else
             application.MessageBox('文件保存失败!','信息确认',MB_OK);
        //   messagedlg('您要继续运行吗?',mtconfirmation,[mbyes,mbno],0);
         end
        else
          begin
            fs.SaveToFile(pchar(savedialog1.FileName));
            application.MessageBox('文件保存成功!','信息确认',MB_OK);
          end;
        tmp.free;
      end;
      fs.Free;
     end;
       adoquery1.close;
    end;注意:存入文件的那个字段类型为image。