Страница: 1 |
Собрался я тут по ФТП файлы в цикле получать...и ударился об два косяка: косяк первый: файлы приходят в BINARY, а надо в ASCII. какое свойство за это отвечает? косяк второй: соединение-то циклическое, и не дождавшись завершения скачивания первого файла, начинает качаться второй и выскакивает ошибка. Как с этим бороться? Буду рад любым мыслям, статейкам, примерам и.т.д. Заранее спасибо.
Слушай, а какая тебе разница BINARY или ASCII??? Ты сохраняй его в любом виде... >Соединение-то циклическое, и не дождавшись завершения скачивания первого файла, начинает качаться второй и выскакивает ошибка GetChunk - это может быть и круто (для HTTP). Но с FTP его как работать заставить? Только не говори, что также, как и для ХТТП - мне придется весь модуль переписывать ! Страница: 1 |
Вопрос: Кто юзал Internet Transfer Control, помогите!
Добавлено: 13.06.02 20:54
Автор вопроса: Shuroidus | Web-сайт:
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Keith Flint
Вопросов: 29
Ответов: 74
Web-сайт:
Профиль | | #1
Добавлено: 14.06.02 19:10
(обращений: 326 )
Элемент Internet Transfer Control предоставляет возможность работы через два наиболее распространённых протокола: Протокол Передачи Гипер Текста (HTTP) и Протокол Передачи Файлов (FTP). Используя элемент Internet Transfer Control, вы можете легко подключиться к любому из серверов, который поддерживает хоть один из этих протоколов, и получать файлы через методы OpenURL или Execute.
Основные операции
Функциональность элемента Internet Transfer Control зависит от протокола, который вы выберите, так как некоторые функции доступны только для одного протокола. Например, метод GetHeader работает только с протоколом HTTP. Но всё равно, есть несколько процедур, общих для обоих протоколов. В основном, для использования любого протокола вы должны:
1. Установить свойство AccessType правильному прокси серверу.
2. Использовать метод OpenURL с соответствующим URL.
3. Использовать метод Execute с соответствующим URL и командой для протокола.
4. Использовать метод GetChunk для получения данных из буфера.
Установка свойства AccessType
Для начала вы должны определить, как вы подключены к Интернету. Если вы в Интранете, то, скорее всего, подключение производится через прокси сервер. Вкратце, прокси сервер - промежуточный сервер между вашим компьютером и серверами Интернета. В основном, прокси сервер выполняет функцию Firewall. Узнать, используется или нет прокси сервер можно в диалоговом окне свойств Интернета (Панель Управления " Интернет " Соединения). Если вы хотите использовать свои параметры прокси сервера, отличающиеся от системных параметров, используйте следующий код:Inet.Proxy = "proxyservername"
Inet.AccessType = icNamedProxy
В обратном случае, игнорируйте свойство Proxy и установите свойство AccessType = icUseDefault.
Метод OpenURL
При использовании метода OpenURL, результат будет зависеть от цели URL. Например, первый URL вернёт HTML документ, а второй текстовый файл:TextBox1.Text = Inet.OpenURL ("http://msa.km.ru/msa/vb/default.asp")
TextBox2.Text = Inet.OpenURL ("ftp://ftp.microsoft.com/disclaimer.txt")
Совет
При использовании метода OpenURL или Execute, вам не требуется устанавливать свойство Protocol. Элемент Internet Transfer Control автоматически установит протокол, исходя из указанного URL.
В URL вы также можете включить параметры. Например, некоторые сервера поддерживают поиск в базе данных. Для этого задайте URL, который будет содержать критерии поиска. Следующий URL выдаст HTML страницу с результатами поиска слова ASP:TextBox.Text = Inet.OpenURL ("http://www.yandex.ru/yandsearch?text=ASP")
Сохранение данных в файл
Если вы хоите сохранить в файл данные, полученные при помощи метода OpenURL, используйте следующий пример, который сохраняет массив данных в двоичный файл:Dim strURL As String
Dim bData() As Byte ' массив для данных
Dim nFile As Integer ' переменная для номера файла
strURL = "http://msa.km.ru/msa/vb/dwn/shelldlg.zip"
nFile = FreeFile() ' получаем номер свобдного файла
bData() = Inet.OpenURL(strURL, icByteArray) 'результат метода OpenURL присваивается массиву и записывается в файл.
Open App.Path & "\shelldlg.zip" For Binary As #nFile
Put #nFile, , bData()
Close #nFile
Синхронный и Асинхронный режимы
Метод OpenURL работает в синхронном режиме предачи данных. Это значит, что операция передачи должна произойти раньше, чем другие процедуры произойдут. Поэтому, передача данных должна быть завершена до того, как продолжится выполнение другого кода.
В другом случае, метод Execute работает в асинхронном режиме передачи данных. Когда вызывается метод Execute, он выполняется независимо от других процедур. Поэтому, после вызова этого метода, другие процедуры могут выполняться, пока данные передаются в фоновом режиме. При использовании метода Execute вы должны осуществлять мониторинг состояния соединения, используя событие StateChanged.
Использование метода Execute через протокол FTP
Метод Execute имеет четыре параметра: url, operation, data и requestHeaders. FTP операции требуют только два параметра: url и operation. Например, чтобы получить файл с удалённого компьютера, вы можете использовать следующий код:Inet.Execute "ftp://ftp.microsoft.com", "GET disclaimer.txt c:\temp\disclaimer.txt"
Примечание
При использовании метода Execute с командами FTP, параметры data и requestHeaders не используются. Их значения передаются в параметре operation через пробел (file1 и file2).
Синтаксис FTP операции таков: [OperationName file1 file2]. Например, чтобы сменить текущую дирректорию используйте команду CD:Inet.Execute strURL, "CD " & toDir
Список доступных команд:Команда Описание Пример CD file Изменяет текущую дирректорию на указанную в параметре file Execute , "CD docs\mydocs" CDUP Переходит к родительской папке Execute , "CDUP" DELETE file Удаляет файл, указанный в параметре File Execute , "DELETE readme.txt" DIR file Выводит список дирректрий Execute , "DIR /mydocs" GET file1 file2 Получает удалённый файл file1 и сохраняет его в местный файл file2 Execute , "GET getme.txt C:\gotme.txt" MKDIR file Создаёт новую диррект
Номер ответа: 2
Автор ответа:
Иван
Администратор
ICQ: 147688925
Вопросов: 24
Ответов: 708
Web-сайт:
Профиль | | #2
Добавлено: 14.06.02 19:38
А вообще вот так:
vtData = Inet1.GetChunk(1024, icString)
Ну так дождись пока первый сольется!
'задержка, пока запрос не выполнен
Do
If Not Inet1.StillExecuting Then Exit Do
DoEvents
Loop
и еще сделай глобальную переменную, после того как файл получен весь присвой ей значение false.
и не давай новых запросов пока эта переменная равно true.
Номер ответа: 3
Автор ответа:
Shuroidus
Вопросов: 7
Ответов: 4
Web-сайт:
Профиль | | #3
Добавлено: 17.06.02 22:40
Номер ответа: 4
Автор ответа:
Иван
Администратор
ICQ: 147688925
Вопросов: 24
Ответов: 708
Web-сайт:
Профиль | | #4
Добавлено: 18.06.02 11:24
Мне очень жаль, но также. Только для подключения нужно указать в свойствах протокол FTP. В пропертях этого контрола глянь.
Номер ответа: 5
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #5
Добавлено: 09.07.02 21:54
Я, юзал! Вроде что то наюзал
Номер ответа: 6
Автор ответа:
merlex
ICQ: 262469658
Вопросов: 2
Ответов: 3
Профиль | | #6
Добавлено: 01.12.05 23:11
есть проблема с авторизацией
если указать имя пользователя и пароль
Inet1.UserName = "user"
Inet1.Password = "password"
то при потключении сервер сообщает о неправильности логина/пароля
а если указать как
UserName:Password@ftpserver.ru то все работает
в чем глюк?
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 02.12.05 12:16
Гы )))) так html мона использовать в постах
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 02.12.05 12:28
Кто ж об них ударяется? Их курить надо! 2 косяка у тебя уже есть, сгоняй ещё за парочкой, и за раз их выкури - у тебя всё будет рабоать!
Номер ответа: 9
Автор ответа:
Shuroidus
Вопросов: 7
Ответов: 4
Web-сайт:
Профиль | | #9
Добавлено: 02.12.05 15:23
Ребзя!
Тема начата - обратите внимание когда начата тема))
просто merlex научился юзать поиск, респект ему, а вот на дату смотреть... Ну ничего, у него еще все впереди, как было впереди у меня 3 года назад когда создавался тред.
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 02.12.05 18:51
)) тоже пральна
2 merlex
так может логин так и надо указывать "Password@ftpserver.ru"? Т.е. это условие сервера и подругому никак
Номер ответа: 11
Автор ответа:
merlex
ICQ: 262469658
Вопросов: 2
Ответов: 3
Профиль | | #11
Добавлено: 02.12.05 22:30
ааа ... я понял
тема вот в чем
надо писать так
'сначало
inet.url=strURL
inet.username = strUSER
inet.password = strPasword
'все строго по порядку
vb сам склеивает user:Password@ftpserver.ru
и если можно вопрос не по сабжу
как в ВБ получить свой IP при подключении к интернету?
Номер ответа: 12
Автор ответа:
merlex
ICQ: 262469658
Вопросов: 2
Ответов: 3
Профиль | | #12
Добавлено: 02.12.05 22:39
и как можно отобразить содержание ФТП каталога, в стандартных контролах
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 03.12.05 21:59
Надёжнее всего использовать PHP. Т.е. это даст абсолютную уверенность что интернет сейчас есть, и напрягать прогу кодом... меньше кода - меньше ошибок. Используй компонент WebBrowser (его можно создать через COM, т.е. без использования ocx) зарегестрируй сайт на каком нибуть h1.ru, размести там php скриптик, примерно такого содержания
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip=getenv('HTTP_X_FORWARDED_FOR');
}
else {
$ip=getenv('REMOTE_ADDR');
}
echo $ip;
?>
вызови такую стр через веббраузер и найди среди того хтмл что будет IP... Впрочем и обычным винсоком прокатить должно, просто GET запрос на эту стр и смотреть ответ потом...
Критиковать меня ненадо, ненравится - API вам в руки
Посмотри примерчики по работе с фтп, их полно в инете. И/или пойщи описание фтп протокола и сам отправь нужные команды те же винсоком