Ответ сервера:
| Код | Ответ: 220 Microsoft FTP Service Команда: SYST Ответ: 215 Windows_NT Команда: FEAT Ответ: 211-Extended features supported: Ответ: LANG EN* Ответ: UTF8 Ответ: AUTH TLS;TLS-C;SSL;TLS-P; Ответ: PBSZ Ответ: PROT C;P; Ответ: CCC Ответ: HOST Ответ: SIZE Ответ: MDTM Ответ: REST STREAM Ответ: 211 END Команда: OPTS UTF8 ON Ответ: 200 OPTS UTF8 command successful - UTF8 encoding now ON. Команда: TYPE I Ответ: 200 Type set to I. Команда: PASV Ответ: 227 Entering Passive Mode (10,17,0,58,201,52). Команда: LIST Ответ: 150 Opening BINARY mode data connection. Ответ: 226 Transfer complete.
|
Файлы с русскими названиями передаются, но в итоге на сервере отображается крокозябра. Привожу функцию:
| Код | Function FTPUpload(FTPIp,UserName,UserPass,FTPPort,DirFTP,DirFile:string):string; var IdFTP:TIdFtp; begin IdFTP:=TIdFTP.Create(nil); try IdFTP.Username := UserName; IdFTP.Password := UserPass; if FTPPort<>'' then IdFTP.port := StrToInt64(FTPPort) else IdFtp.Port:= 21; IdFtp.Host:= FTPIp; IdFtp.Passive:=True; IdFtp.ConnectTimeout:=3000; idftp.TransferType:=ftBinary;
try if IdFTP.Connected then begin
{if IdFTP.IsExtSupported('UTF8') then begin if IdFTP.SendCmd('OPTS UTF8 ON') = 200 then begin DirFTP:=UTF8Encode(DirFTP); DirFile:=UTF8Encode(DirFile); IdFTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; end; end;}
IdFTP.ChangeDir('/'+DirFTP); IdFTP.Put(PChar(DirFile),PChar(ExtractFileName(DirFile)),False); idFTP.Disconnect; result:='Отправлено'; end else begin IdFTP.Abort; end; except on E : Exception do begin result:='Ошибка: '+E.Message; idFTP.Disconnect; end; end; except on E : Exception do begin result:='Ошибка: '+E.Message; idFTP.Disconnect; end; end; finally IdFTP.Free; end; end;
|
Буду признателен если подскажете решение. |