안녕하세요~
인디 FTP 사용중 download시 에러가 있는것 같아 여쭙고자
적습니다.
-----< 증상 >-----
FTP로 화일은 정상적으로 올라갑니다.
헌데 문서파일(아래한글,훈민정음,엑셀, 워드 등)은 안되는군요.
실행 파일도 도스의 세카만 화면만 나오고 없어져 버리는 군요.
WS-FTP로 바이러리로 다운을 하면 실행이 되므로
UPLOAD는 잘 됐다고 할 수 있겠죠 ?
텍스트 문서와 압축 파일은 잘 열립니다.
이녀석을 어딜 손봐야 할까요 ?
-----< 환경 >------
DEL 5.0 ent.
indy 9.0
WINDOWS 20000pro
ORACLE 7
-----< 소스 >------
if not IdFTP1.Connected then
Application.MessageBox('연결이 해제되었습니다. 다시선택하세요','오류',Mb_Ok+Mb_IconHand)
else try
ProSetBtn(False);
// 버튼 비활성화
sSourceName := fieldByName('fsave_link_name').AsString;
// DB에서 서버에 실제 저장된 파일 명 자료를 읽어옴.
if bOpenMode then begin
// 바로 실행 할 건지 저장 할 지를 구분
GetEnvironmentVariable('Temp', aBuffer, Sizeof(aBuffer));
sTargetName := StrPas(aBuffer);
// 바로 저장시 시스템 templory 디렉토리를 찾음.
sTargetName := sTargetName + ''+fieldByName('fsave_name').AsString;
// 디렉토리 + 실제 파일명
end
else begin
SaveDialog1.FileName := fieldByName('fsave_name').AsString;
// save dialog 에 서버에 저장된 파일의 원래이름을 뿌려줌.
if SaveDialog1.Execute then
sTargetName := SaveDialog1.FileName;
// 저장될 파일명을 지정
end;
EdtFileName.Text := sTargetName;
// 저장될 파일을 화면에 뿌려줌.
if UpperCase(FieldByName('fsave_ext').AsString)= '.TXT' then
IdFTP1.TransferType := ftASCII
else IdFTP1.TransferType := ftBinary;
// 확장자가 TXT이면 ascii 모드로 그 이외는 Binary 로 전송모드 선택
ChageDir(fieldByName('fsave_link_dir').AsString+'/');
// ftp 서버의 파일 저장 위치를 DB에서 읽어와 서버 디렉토리 변경
BytesToTransfer := IdFTP1.Size(sSourceName);
// IdFTP1.Get(sSourceName, SaveDialog1.FileName., true);
//★★★★★★★★★★★★★★★★★★★★★★★★★★★
IdFTP1.Get(sSourceName, sTargetName, true);
// 이부분인데요 ... 소스를 타겟으로 있어도 덮어쓴다(true) 는 부분인데
// 잘못된게 있나요 ?
//★★★★★★★★★★★★★★★★★★★★★★★★★★★
if bOpenMode then
funWinRun(sTargetName);
// winexecute API 호출 프로시져
Finally
ProSetBtn(true);
// 버튼 활성화
end;
잘못된 한줄탓이었네요.
zip 파일은 ascii 코드도 읽어지는군요.
이걸 알았더라면 전송모드시 에러란걸 금방 알았을텐데
zip은 열리고 일반 바이너리 파일은 안열려 엉뚱한 오해(?) 들을 했습니다.
chageDir() 에 ascii 변환 항목이 있어 코 전송모드 선택전에 디렉토리
change를 해주면 되네요.
읽어주신 분들 감사 감사....즐코 즐프하세용~
수정 부분은 재기입했습니다. 아래 참조하세요.