Q&A

  • 파일을 db에올렸다 내려받는데....깨지네요...
[1]번만이라도 알고 싶습니다......제발요.....오늘도 안되면....저 미칠지도 모릅니다....ㅠㅠ

[1]
파일을 올리고 내릴때 exe파일만 깨집니다....
기타 다른 파일들은 멀쩡한데....exe실행파일만 실행이 안됩니다....
왜 그런지 잘 모르겠습니다......
[2]
그리고 데이타베이스 콤퍼넌트를 exclusive모드로 하지않으면 에러가 발생합니다..."LOB트랜잭션에러...."이런식으로.....
exclusive:= true 하면 에러가 없어지구염....근데 여럿이 쓸거라서......
exclusive 를 false로 할수 있는 방법은 없을까염?


소스를 올립니다.....

우선 다운받는거..
///////////////////////////////////////////////////////////////////
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  FName: String;
begin
  if Application.MessageBox(PChar(' ['+Table1FILE_NAME.AsString+']파일을 하드디스크로 풉니다.'),
       '확인',mb_IconQuestion+mb_YesNo) = id_Yes then
  begin
    FName := 'C:'+Table1FILE_NAME.AsString;
    TBlobField(Table1FILE_FILE).SaveToFile(FName);
    Application.MessageBox('풀기가 완료되었습니다.','확인',0);
  end;
end;
///////////////////////////////////////////////////////////////////
업로드하는거...(dragNdrop하려구...이렇게 했습니다.)
///////////////////////////////////////////////////////////////////
procedure TForm1.WMDropFiles(var Msg: TMessage);
var
  Buff : Array[0..255] of Char;
  Count : Word;
  FullPath : String; //읽어오는 파일의 완전한 경로.
begin
  for Count := 0 to DragQueryFile(Msg.WParam, $FFFFFFFF, NIL, 0) - 1 do
  begin
    with Self do
      SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
                   SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    Application.ProcessMessages;

    DragQueryFile(Msg.WParam, Count, @Buff, SizeOf(Buff));
    FullPath := StrPas(Buff);
    GetFileInfo(FullPath);

    DBEdit1.Text := UpperCase(ExtractFilename(FullPath)); // 파일 이름.

    Application.ProcessMessages;

    Table1.Insert;

    DragQueryFile(Msg.WParam, Count, @Buff, SizeOf(Buff));
    FullPath := StrPas(Buff);
    GetFileInfo(FullPath);

    DBEdit1.Text := UpperCase(ExtractFilename(FullPath)); // 파일 이름.

    Application.ProcessMessages;

    TBlobField(Table1.FieldByName('FILE_FILE')).LoadFromFile(FullPath);
    Table1.Post;

    ShowMessage('복사가 완료되었습니다.');

    with Self do
      SetWindowPos(Handle, HWND_NOTOPMOST, Left, Top, Width, Height, 0);
  end;
  DragFinish(Msg.WParam);
///////////////////////////////////////////////////////////
GetFileInfo는 사용자 정의 프로시져입니다....
파일정보를 가져오지요....
아시는 분 돔 바랍니다.
테이블 구조는 아래와 같습니다.
file_name      varchar2
file_file          blob
file_update     date

1  COMMENTS
  • Profile
    타락천사 2002.10.22 01:22
    안녕하세여. 타락임다..

    대강 블럽필드의 파일을 생성하는 코드를 함 만들어 봤어요..

    안돌려 봐서 잘 될지는 모르겠어여.. 안되면 말구여.. ㅠㅠ

    좀이라도 참고가 되길 바람다..

    var
      FS: TFileStream;
      BS: TBlobStream;
    .......
    begin
      ..........
      FS := TFileStream.Create(FileName, fmCreate);

      BS := TBlobStream.Create(TBlobField(Field), bmRead);

      try
        FS.SetSize(BS.Size);
        FS.CopyFrom(BS, BS.Size);
         .....
      finally
        BS.Free;
        FS.Free;
      end;

    end;

    즐푸하세여..

    타락천사..