Форум » FiveWin » залить файл на FTP » Ответить

залить файл на FTP

fil: Понадобилось мне сделать обмен текстовыми файлами с FTP сервером, в интерактиве(у меня полный доступ к серверу) С FTP на локал- все работает: URLDownloadToFile() А вот с локала на FTP не выходит. Использую FTPPutFile(). Коннект с ресурсом есть, ошибок не дает, но и заливки файла на FTP не происходит

Ответов - 14

Dima: Тож юзаю FTPPutFile , проблем нет. Юзер под которым ходиш на FTP , имеет все права для залива ?

fil: Ну да, вроде все. Через TotalCommander пишу/читаю.

Dima: Firewall установлен ? Возможно он блокирует..... PS Покажи исходник начиная с InternetOpen()


fil: oInternet := TInternet():New() oFTP:= TFTP():New( MyResouce, oInternet, Login, Password ) ********************************************************** ::hFTP = InternetConnect( oInternet:hSession, cFTPSite, FTP_PORT,; ::cUserName, ::cPassword,; INTERNET_SERVICE_FTP, 0, 0 ) ********************************************************** ? oFTP:hFtp > 0 ? FTPPutFile( oFTP:hFtp, LocalFile, WebFile, 0, 0 ) = .F. Коннект есть, пароль и логин правильные(я с ними примеры гонял на скачивание файла и др.) Сам FTPPutFile() не срабатывает Firewall не ставил, но у меня Стрим на роутере, а сколь я знаю - ADSL модемы в этом режиме поддерживают некий внутренний Firewall

Dima: Попробуй аналог из What32 , работаю с ним.

fil: What32 - в смысле What32.lib, тогда аналог чего ?

Dima: fil пишет: аналог чего ? FTPPutFile

Dima: Примерно так на скорую руку [pre] hInternet := InternetOpen() if hInternet # 0 hFtp := InternetConnect( hInternet.......бла бла бла) if hFtp #0 if !FtpPutFile( hFtp......бла бла бла) ? "Передача не удалась" endif InternetCloseHandle( hFtp ) endif InternetCloseHandle( hInternet ) endif [/pre] ЗЫ What32.lib Golden FTP Server Pro

fil: Сделал обоими вариантами - чрез TFTP и через InternetOpen(). FtpPutFile() возвращает .T., но сам файл не переписывается. Что может быть ? Может все-таки админа трясти на доступ ?

fil: Через Таском работает. Админ вроде не виноват. Надо смотреть на разных каналах

Dima: Было что то похожее на мобильных операторах. Проверяли Утел , КиевСтар , UMC У всех работал доступ по FTP с помощью Total Commander или же FlashFXP. FtpPutFile сработал только на Утел. Причину так и не выяснили. PS У обычного кабельного провайдера тож работает без проблем.

MMK: fil пишет: Сделал обоими вариантами - Вот еще вариант, класс qFtp . У меня все работало. Кстати проверял с Димой :) Класс пришлю.. ****************************** Static Function FTPTest() ****************************** local oFTP Ferase("logftp.txt") oFTP:=qFTPClient():New("85.30.228.77", 21, {|cMessage| Logfile("logftp.txt", {cMessage})},,, ) oFTP:lPassive := .T. if oFTP:Connect() MsgInfo("Успешное моединение с сервером " + oFTP:cServer + CRLF + oFTP:cServerIP + CRLF + oFTP:oSocket:ClientIP()) if oFTP:Cd("/Upload/(=SOFT=)/m/mmk/") MSginfo("Поменяли дирректорию...") if oFTP:Dir() Msginfo("Посмотрим , что в ней есть") Aeval(oFTP:acDir, {| cDir, nCount | Msginfo(Str(nCount) + " " + cDir)}) oFTP:Retr("/Upload/(=SOFT=)/m/mmk/bn.w", "bn.w") oFTP:Del("V37.dbf") oFTP:Stor("pr.obj", "/Upload/(=SOFT=)/m/mmk/pr1.obj") oFTP:Rename("bn.w", "bn.backup") oFTP:Quit() oFTP:End() Msginfo("Пока все") else Msginfo("Не удалось просмотреть дирректорию!") oFTP:Quit() oFTP:End() endif else Msginfo("Не удалось поменять дирректорию!") oFTP:Quit() oFTP:End() endif else Msginfo("Соединение не состоялось!") endif return nil

Dima: MMK пишет: Кстати проверял с Димой :) Да было такое много много лет назад :) Можно еще попробовать библиотеку TIP.LIB

fil: Заработало, однако. MMK спасибо !



полная версия страницы