On-line: alkresin, PSP, гостей 1. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 65
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 25.03.17 18:45. Заголовок: HBCURL


Dima пишет:

 цитата:
Вот и все непонятки закончились после того как убил кучу времени.
У DownloadFile проблема с длинными именами файлов , при чем в UploadFile этой проблемы нет.
Не важно каков размер файла , важна для него длина имени файла.
Прошу опровергнуть или подтвердить описанное поведение DownloadFile.


Добрый день. У меня точно такая же проблема нарисовалась в моей программе, как описывает Дима. Программа на отрез не хочет принимать с фтп длинные имена файлов.
точь в точь как в этой теме http://clipper.borda.ru/?1-4-0-00000844-000-10001-0
Удалось ли Вам побороть данную проблему.? Как вышли из ситуации?
Хочу перейти на HBCURL, но нужно описание всех функций, особенно получение списка файлов с фтп-сервера по маске и скачивание файлов с сервера.
Поделитесь своими наработками пожалуйста.

П.С. Вот кусок программы, в котором я пытаюсь скачать файлики с сервера, список получаю, а вот файл /файлы / скачать не удается...
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 65 , стр: 1 2 3 4 All [только новые]


администратор




Пост N: 6339
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.03.17 22:39. Заголовок: Eduard Забил я на H..


Eduard
Забил я на HBCURL...
Делаю все с помощью HBTIP , но есть непонятки с рядом провайдеров , точно как описано и у вас.
В основном все работает нормально , НО есть не понятные провы у которых все глючит.....и хз почему.
К одному как то обратились , оказалось он там какие то IP и DNS сцука не верно настроил , апосля
перенастройки все заработало нормально.

PS
Как вариант можно пробнуть консольный вариант CURL
Линк дам.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 66
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 25.03.17 23:09. Заголовок: Dima пишет: Как вар..


Dima пишет:

 цитата:
Как вариант можно пробнуть консольный вариант CURL


Спасибо, не надо, есть у меня.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 341
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 11:12. Заголовок: Я использую связь че..


Я использую связь через функции из стандартной библиотеки Windows wininet.dll

С приёмом-передачей файлов с длинными именами проблемы нет - использую только такие
пример : 04231e1ae.20160615.60453.ready (ID-компьютера.дата.время.статус)

Дату+время записываю в имя файла именно по причине какого-то глюка - сервер не всегда дату правильно отдаёт .... а это важно - например отчет о продаже .

Вот примерно часть кода по приёму файла с FTP :

hLib := LOADLIBRARY( "wininet.dll" ) // Используем "штатную" библиотеку Windows


// открыли "интернет" + сделали соединение с FTP-сервером
hInternet = INETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 )
hConnect = INETCONNECT( hInternet, Имя_сервера_FTP, INTERNET_DEFAULT_FTP_PORT, Имя_пользователя_FTP, Пароль_FTP, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE , 0 )


FTPGETFILE( hConnect,'request/ORDERS/'+(Имя_Скачиваемого_файла),System.Tempfolder+'\'+(имя_файла), 0, FILE_ATTRIBUTE_ARCHIVE, 0, 0 )

InetCloseHandle( hConnect) && закрыли соединение с сервером
InetCloseHandle( hInternet) && закрыли соединение с Интернет

Если нужно более развернуто - сообщай .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 67
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 13:16. Заголовок: Softlog86 пишет: Ес..


Softlog86 пишет:

 цитата:
Если нужно более развернуто - сообщай


Да, нужно. Взято отсюда? http://forums.fivetechsupport.com/viewtopic.php?f=3&t=23075 Там в принципе все понятно, только не понятно с этой функцией по получению списка файлов, особенно данный фрагмент текста
Скрытый текст

Больше всего меня интересует получение файлов по маске, и потом скачивание их всех вместе за один раз.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 343
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 13:43. Заголовок: получение списка фай..


скачиваю файлы по-одному , оказалось что время скачивания что группой что по одиночке почти одинаковое .
Тем более что мне в процессе скачивания мне нужно ещё что-то с ними делать ....

получение списка файлов по маске :
function ftpDIR(cKAT, Mask)

//*******************************************************************************
//
// создаём массив имён файлов из cKAT/ для маски MASK на сервере обновлений .....
// возвращаем МАССИВ {имя , дата}
//
//*******************************************************************************

Local cUrl


cUrl := "ftp://" + Alltrim( FTPUSERNAME )+":"+ Alltrim(FTPpassword ) +"@"+ alltrim(FTP_SERVER_NAME)

oUrl := tURL():New( cUrl ) //
IF Empty( oUrl )
return nil
endif
oClient := TIpClientFtp():new( oUrl, .F. )
IF Empty( oClient ) ; return nil ; endif
oClient:nConnTimeout := 15000 // // Временем можно поиграть ...
oClient:bUsePasv := .T.



IF At( "@", FTPUSERNAME ) > 0
oClient:oUrl:cServer := FTP_SERVER_NAME
oClient:oUrl:cUserID := FTPUSERNAME
oClient:oUrl:cPassword := FTPPassword
ENDIF


IF oClient:Open()
IF Empty( oClient:cReply )
oClient:Pasv()
ELSE
oClient:Pasv()
ENDIF
arFILES:={}


arFILES:=FTPFILLDATETIME(cKAT, Mask ,oClient) // заполняем нужной информацией

ELSE
msgalert('Нет связи с сервером '+FTP_SERVER_NAME ,'Ошибка !')
arFILES:={}
ENDIF


oClient:CLOSE()


return aRFILES


FUNCTION FtpFillDateTime(Katalog,cMask,oClient)

LOCAL ctext, cSepChar, nPos, acDir, cLine, x, avalues, xpesq, xpos, cvalue, cvalue1 , aRET:={},a:={}

LOCAL i

clret:= oClient:PWD
cpath := oClient:cReply
cfolder:=cpath+"/"+KATALOG
oClient:CWD(cfolder)

a := oClient:Listfiles(cMask)
oClient:reset()

If LEN(a)>0
FOR i:=1 TO LEN(a)

// { Файл.C , Дата.D , Время.C }
// Коррекция времени ! TimEcorrection - так как на сервере идёт своё время ...... - прибавляем TimeCorrectionI (число секунд)
Z:=SECTOTIME(TIMETOSEC(a[i,4])+TimeCorrectionI)

AADD(aRET,{a[i,1] , a[i,3] , Z } )

NEXT i
ENDIF

// Возвращаем массив с { имя , дата , время } )

RETURN aRET



Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 6340
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 14:44. Заголовок: Eduard пишет: STRUC..


Eduard пишет:

 цитата:
STRUCT oWin32FindData


Это надо прицепить из FW
source\classes\tstruct.prg
include\struct.ch


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 68
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 15:05. Заголовок: В какой библиотеке н..


В какой библиотеке находиться функция LoadLibrary кто знает? Компилятор MinGw дает ошибку при этапе линковки программы
Скрытый текст


Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 344
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 15:17. Заголовок: Eduard в файле ...


Eduard

в файле .HBC Вашего проекта нужно добавить строчку :
libpaths=c:\borland\bcc55\lib;c:\borland\lib\PSDK;

Ну или как-то по-другому подключить ....

Вроде как LOADLIBRARY() лежит в
c:\borland\lib\PSDK\kernel32.lib


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6341
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 15:19. Заголовок: Eduard Кажись это F..


Eduard
Кажись это FW
source\winapi\dll.c

Можно пробнуть hb_DynCall

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6342
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 15:20. Заголовок: Softlog86 пишет: li..


Softlog86 пишет:

 цитата:
libpaths=c:\borland\bcc55\lib;c:\borland\lib\PSDK;


У него MINGW

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 345
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 15:29. Заголовок: Тогда понятно ......


Тогда понятно ....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1400
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.03.17 19:43. Заголовок: Eduard пишет В какой..


Eduard пишет
 цитата:
В какой библиотеке находиться функция LoadLibrary


MiniGui\SOURCE\Dll\_windll.c
там есть


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 69
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 19:47. Заголовок: Softlog86 пишет: h..


Softlog86 пишет:

 цитата:

hConnect = INETCONNECT( hInternet, Имя_сервера_FTP, INTERNET_DEFAULT_FTP_PORT, Имя_пользователя_FTP, Пароль_FTP, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE , 0 )


Где можно посмотреть описания вот этих переменных что выделены жирным? есть какой ch-файл?
Есть команда, для перехода в каталог, типа CWD?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 346
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 21:33. Заголовок: Да , CWD () выбор д..


Да , CWD () выбор директории


Старая школа ещё помнит что такое 21-й порт :)



#define FILE_ATTRIBUTE_ARCHIVE 128
#DEFINE FTP_TRANSFER_TYPE_UNKNOWN 0
#DEFINE FTP_TRANSFER_TYPE_ASCII 1
#DEFINE FTP_TRANSFER_TYPE_BINARY 2
#define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default
#DEFINE INTERNET_DEFAULT_FTP_PORT 21 // ' порт по умолчанию для FTP серверов
#define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher "
#define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP "
#define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS "
#define INTERNET_DEFAULT_SOCKS_PORT 1080 // default for SOCKS firewall servers.
#DEFINE INTERNET_SERVICE_FTP 1
#define INTERNET_SERVICE_GOPHER 2
#define INTERNET_SERVICE_HTTP 3
#DEFINE INTERNET_FLAG_PASSIVE 134217728 // used for FTP connections

#DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0 // Use registry configuration
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
#DEFINE INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
#DEFINE INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS


Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 6344
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.17 14:03. Заголовок: Eduard По поводу фу..


Eduard
По поводу функций wininet
https://searchcode.com/codesearch/view/4487644/

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 70
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 16:41. Заголовок: Dima пишет: По пово..


Dima пишет:

 цитата:
По поводу функций wininet
https://searchcode.com/codesearch/view/4487644/



Спасибо, пригодиться. Вчера на скорую руку закончил проект, но надо еще внести пару правок в программу, т.к. сроки на работе поджимают.
Есть возможность добавить ПрогрессБар к функции для приема/передачи файлов, что-то такое похожее на это?:
Когда был HBTip то функция работала.

Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6345
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.17 21:25. Заголовок: Eduard Это ведь Мин..


Eduard
Это ведь Минигуи если я верно понял.
Что то мне кажется что юзая функции "wininet.dll" не получится сделать ПрогрессБар (возможно ошибаюсь)
Поэтому вижу варианты:
1. Повесить в окне "крутилку" , примеры есть
2. Заюзать AVI файл , типа как для копирования
3. Вывесить типа WAIT окна , "Ждите"
4. Повесить ПрогрессБар как в винде 10 , он бегает тудым сюдым
И по ходу если файлы по размерам не очень большие , то и смысла нет что то вешать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 347
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 27.03.17 21:51. Заголовок: Дима верно всё говор..


Дима верно всё говорит . Поэтому я и передаю файлы по-одиночке и завязываю это событие на прогресс-бар .
(Поди не Дуал-ап - Интернет ? ) Моих юзеров при всяких операциях с фтп-приемом-передачей задержки не напрягают . На уровне открытия тяжелой страницы сайта . Да и их в это время можно чем-то занять (см Дима ) :)
Большие , даже огромные , dbf файлы зипуются в очень компактную пачку . В любом случае передача быстрая . Для очень больших файлов есть смысл предусмотреть контроль полученного файла хотя-бы на уровне размера .

Ох уж эта вредная привычка еще с CLIPPERовских времён всё экономить : память , размеры полей , "чтоб всё летало" :)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 22:15. Заголовок: Dima пишет: И по хо..


Dima пишет:

 цитата:
И по ходу если файлы по размерам не очень большие , то и смысла нет что то вешать.


Да, файлики не большие от 5 кб. и до 100-120 кб. в редких случаях до 200. Все дело в том, что там где данная программа используется очень плохие каналы связи,
стоят модемы от Укртелекома АДСЛ корпоративный канал до 128 - 512 кб/с. В основном скорость 128 кб./с Хотелось бы видеть процесс закачки.
п.с. Предприятие ПАТ "Укрпошта", вот такие каналы стоят в отделениях свази.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 22:18. Заголовок: Eduard пишет: Для о..


Eduard пишет:

 цитата:
Для очень больших файлов есть смысл предусмотреть контроль полученного файла хотя-бы на уровне размера .


Да такое у меня предусмотрено, идет проверка на контрольную сумму, crc посредством фтп-сервера.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 65 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 172
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет