Q&A

  • nmftp에서 upload시 file open error 발생?
안녕하세요..

nmftp 콤포넌트를 사용하여 화일을 서버로 백업시키는 어플리케이션을 만들고 있습니다..

nmftp.upload(local_file, remote_file)에서 에러가 발생하는데,

'can not file open local_file' 이런 에러가 발생합니다..

여러가지 테스트를 해보니 문제는 local_file을 다른 어플리케이션이 계속적으로 사용하는 화일이기 때문이더라구요..

Application은 계속적으로 실행되고 있어야 하기 때문에 실행을 잠시 중지 시키고 local_file을 업로드 할 수 없는게 문제입니다..

어떻게 해결을 할 수 있을련지요?
1  COMMENTS
  • Profile
    이추형 2002.07.20 02:58
    function TfrmTest.SQLUPLOAD : Boolean;
    // 파일을 Client 'c:data' directory에서 서버로 UPLOAD하는 Function입니다.
    var
      LocalFile, RemoteFile : String;
      F : File of Byte;
      FSize : Integer;
    begin
      ftpSql.Vendor   := NMOS_AUTO;
      ftpSql.Host     := 'xxx.xxx.xxx.xxx';
      ftpSql.UserID   := 'aaa';
      ftpSql.Password := 'aaa123';
      ftpSql.Port     := 21;

      if edCUS_GID.Visible = False Then
      begin
        LocalFile := 'C:DATA' + 'file';
        RemoteFile := 'file';
      end;

    //  if ftpSql.Connected then ftpSql.DisConnect;

      try
        if ftpSql.Connected then ftpSql.DisConnect;
        ftpSql.Connect;
    //    ftpSql.Mode(MODE_ASCII);
        ftpSql.ChangeDir('/files');
      except
        Application.MessageBox('서버에 접속하는 동안 오류가 발생하였습니다.'+#13+
                               '시스템 관리자에게 문의하세요!', '서버접속중 SOCKET통신 오류', mb_ok);
      end;
      try
        AssignFile(F, LocalFile); // 파일의 포인터 정의
        Reset(F);                 // 파일을 여는 데 읽기용도로 연다.
        FSize := FileSize(F);
        CloseFile(F);
        ftpSql.Allocate(FSize);
        ftpSql.Upload(LocalFile, RemoteFile);
        Result := True;
        Application.MessageBox('서버에 UPLOAD OK', mb_ok);
      except
        Application.MessageBox('서버에 UPLOAD하는동안 오류가 발생.'+#13+
        '다시한번 잘 해봐요!', '파일 UPLOADING중 SOCKET통신 오류', mb_ok);
        Result := False;
      end;

      if ftpSql.Connected then ftpSql.DisConnect;
    end;
    • 수서니
    • 2002.07.20 20:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.07.20 23:18
      물론, TfrmPrn 내부에서 자신을 생성한 폼을 알고 싶으신 것이겠죠? 그렇다면, Owner 속성을 이용하시...
    • 수서니
      2002.07.22 19:52
      저기.. 제가 초보라 아는게 없어서요....   if (Self.Owner<>nil) and (Self.Owner is...
    • 김용덕
    • 2002.07.20 20:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.07.20 23:31
      hsr/////////////////////////////////////////////////////////// 맞습니다, 이상하게 마우스 왼쪽을 누...
    • 김용덕
      2002.07.22 20:11
    • 빠블로
    • 2002.07.20 20:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.07.20 20:24
      클라이언트를 일일이 설치하지 않으셔도 됩니다. BDE만 설치하셔도 접속가능하구요. BDE설치하기 싫으...
    • 깨구락지
      2002.07.20 22:37
      명령매뉴얼이 없다면 그야말로 맨땅에 헤딩이군요. 제작회사에 직접 알아보시는게 빠를것 같구요, 영수...
    • real21c
    • 2002.07.20 02:31
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 장희수
    • 2002.07.20 01:59
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2002.08.18 12:59
      MSDN을 보면 Setup API가 있습니다. 자기자신을 rewrite할 수도 있습니다. 리부팅하면 rewrite됩니다. ...
    • 질문맨~
      2002.07.20 20:05
      제가 쓰는 방법으로 설명드리자면여.. 일단 smart update를 위한 별도의 프로그램이 필요합니다. 그...
    • 이현철
      2002.07.20 19:56
      델코,델마당,델그룹 자료실,강좌란을 샅샅히 뒤져보세요.. 구현까지 완성한 것을 제가 많이 보았습니다..
    • 이추형
      2002.07.20 02:52
      UPGrade용 프로그램이 필요합니다. 실행프로그램에서 확인하여 자신을 ReWrite할수 있지만 쉬운 방법은 ...
    • 홍성락
      2002.07.20 02:16
      hsr//////////////////////////////////////////////////////////// 더 좋은 방법도 있겠죠, 스케일이나 ...
    • 델파이사랑
      2002.07.20 18:26
      감사합니다....좋은 답변이네여......(냉무)
    • 송영식
    • 2002.07.20 01:23
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 정형준
      2002.07.20 13:42
      제가 보기엔 아직 파일이 안만들어졌는데 읽으려고 해서 난 Error 같습니다. FileCreate를 하자마자 파...
    • 이추형
      2002.07.20 01:52
      I/O error시에는 try문을 함써보시는게 어떨지요 참고로 저같은 경우는 RichEdit를 사용합니다. RichEdit...
    • 김도형
      2002.07.20 02:04
      FileOpen을 하지 마시구 바루 AssignFile(f1, fName1);   위 부분부터 들어가면 될꺼 같...
    • 강신구
    • 2002.07.20 00:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.07.20 02:58
      function TfrmTest.SQLUPLOAD : Boolean; // 파일을 Client 'c:data' directory에서 서버로 UPLOAD하는 Fu...
    • 강인규
      2002.07.20 05:00
      그냥 일반적인 기능을 생각하신다면 아웃룩바는 프리웨어도 많이 있는데요. =_= 자료실에서 outlook ...
    • 홍성락
      2002.07.20 01:41
      hsr/////////////////////////////////////////////////////// 홈페이지가 아니라 일반 델파이 프로그램에...
    • 김형수
      2002.07.20 02:43
      안녕하세요 . 제 생각엔 speedbutton 을 써서 property 의 flat 을 true로 설정해 주고, 각각에 이미지와 ...
    • 홍성락
      2002.07.20 03:37
      hsr////////////////////////////////////////////////////////// 많이 다듬어야 될건데요, 특히 화면 크...
    • 최용일
      2002.07.20 02:40
      안녕하세요. 최용일입니다. DrawText로 그리시면 정확한 영역의 크기를 알 수 있습니다... 아래와 같...
    • 델파이사랑
      2002.07.20 18:49
      좋은 답변 진심으로 감사드립니다. (냉무)
    • 손창호
    • 2002.07.20 00:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서경환
      2002.07.20 00:52
      혹시 폼에 프로퍼티에 KeyPreview를 True로 안주어서 아닐까요. 혹시...
    • 신태영
    • 2002.07.20 00:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서경환
      2002.07.20 00:49
      컴파일 하면 디렉토리를 지정하지 않은 이상 .dpr 파일이 있는 디렉토리에 생길걸요. ctrl + F9
    • 신연근
      2002.07.20 00:07
      이게 맞는지 모르겠네요 예전에 있던 자료 카피했났던건데..아무쪼록 잘 되길.. MEMO라고 데이터가 ...
    • 박의동
      2002.08.22 03:13
      안녕하세요. 저는 시리얼/이더넷 프로토콜변환기 등을 만들고 있습니다. 문제가 되고 있는 다중 접속은 일...
    • 진성열
      2002.07.19 22:41
      음 변환기를 통하여 읽어온 정보를 한 TCP서버가 가지고 있음 될꺼 같은데요. 실제 TCP서버 안에 가상의 ...
    • 열린마음
      2002.07.20 01:39
      안녕하세요. 제 질문을 읽고 답변해 주셔서 진심으로 감사드립니다. 좋은 하루되시고, 평안하시길 ...
    • 한만교
      2002.07.19 21:09
      난해하지만 그렇게 어려운 일은 아니군요... 어차피 원격감시장비가 서버로 동작중이라면...외부에서 접속...
    • 열린마음
      2002.07.19 22:39
      안녕하세요. 우선 지루하고 복잡한 글을 읽어주시고 답변해주셔서 감사드립니다. 저도 처음에 그런 생...
    • 한원희
      2002.07.19 23:41
      음... 제가 생각할 때는 채팅 서버와 비슷하게 작성하셔야 할 것 같습니다. 실제 장비를 관리하는 TCP 관...
    • 열린마음
      2002.07.20 01:35
      안녕하세요. 지금 이것 저것 시험해보느라 이제 답변을 보게 되었습니다. 성의껏 답변해 주셔서 한원...
    • 김상수
    • 2002.07.19 20:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.07.19 23:48
      ExtractFileDrive(Application.ExeName); 요렇게 하면 드라이브 명을 얻을 수 있습니다. Application.E...
    • 김상수
      2002.07.20 06:37
      고맙습니다... 유용하게 사용하도록 하겠습니다...
    • 최석기
      2002.07.19 22:45
      TSession에 GetAliasDriverName 메소드를 이용하시면 되겠네요.
    • 이추형
      2002.07.19 20:17
           Progressbar1.Position:=strtoint(E_CH1_1.Text);   도움말을 참...
    • 김수경
      2002.07.19 20:16
      Progressbar1.Position :=  IntToStr( E_CH1_1.Text );
    • 하기
      2002.07.19 20:15
      Progressbar1.Position := StrtoInt(E_CH1_1.Text); ...   ^^;
    • ㄴ ㅏ ㅁ ㅑ
      2002.07.19 20:28
      이렇게 했더니 아예 다운돼 버림니다.... 왜구럴까여....
    • 서경환
      2002.07.20 00:58
      Edit박스에는 숫자만 들어가야 되는거는 아시겠죠. 그리고 값이 Progressbar1의 프로퍼디 min~max까지가 ...