안녕하세요..
nmftp 콤포넌트를 사용하여 화일을 서버로 백업시키는 어플리케이션을 만들고 있습니다..
nmftp.upload(local_file, remote_file)에서 에러가 발생하는데,
'can not file open local_file' 이런 에러가 발생합니다..
여러가지 테스트를 해보니 문제는 local_file을 다른 어플리케이션이 계속적으로 사용하는 화일이기 때문이더라구요..
Application은 계속적으로 실행되고 있어야 하기 때문에 실행을 잠시 중지 시키고 local_file을 업로드 할 수 없는게 문제입니다..
어떻게 해결을 할 수 있을련지요?
// 파일을 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;