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



Пост 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: 1634
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.03.21 01:40. Заголовок: Я давно не собирал l..


Я давно не собирал libcurl.dll и программ с его использованием соответственно.
Попробую найти время и посмотреть.

Это сделать можно, вот вариант решения
Другое дело можно ли это сделать для mingw и какие телодвижения нужно совершить для этого

А чем не устраивает hbtip или curl, если он с 10-й действительно поставляется?
Просто интересно

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




Пост N: 7295
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 11:57. Заголовок: Петр С DelayLoad хо..


Петр
С DelayLoad хорошее решение
Но такой фичи похоже нет в MINGW , что печально.

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




Пост N: 7296
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 12:13. Заголовок: Петр пишет: А чем н..


Петр пишет:

 цитата:
А чем не устраивает hbtip или curl, если он с 10-й действительно поставляется?


Hbtip устраивает но у ряда провайдеров UPLOAD/DOWNLOAD (особенно последний) глючит
по FTP и не докачивает файлы , хотя фтп-сервер один и тот же.
Игрался с CURL.EXE у таких провов и FTP , вот с ним нет проблем.
Если с LIBCURL.DLL не получится как задумал , возможно придется юзать CURL.EXE
Спасибо

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





Пост N: 388
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 29.03.21 10:08. Заголовок: Если устроит "ко..


Если устроит "колхозное" решение - стал применять, обнаружив, что не закачиваются на ftp файлы с длинными именами, а именно УПД

 
aFiles := Directory(_OUTBOX+cShab+"*.xml")
aBin := Directory(_OUTBOX+cShab+"*.bin")
nLen := Len(aFiles)
IF nLen <= 0 THEN RETU // Выход при отсутствии файлов для сохранения на FTP

// Отключена технология моей работы с FTP. Попытка открытия канала и при отказе выход из режима
oFtp := TIpClientFtp():new( _ZFTP ) // Создаю экземпляр класса объекта
IF !oFtp:open() THEN RETU

//*** Штатные средства не умеют работать с длинными именами файлов, как у УПД - делаю через жопу
IF cShab == "ON_"

// 04.12.2020 Оставляю технику без изменений - добавив в условие удаление из OUTBOX == не проверяю успешность отправки
oFtp:close() // Закрываю канал - соединение
FOR nI := 1 TO nLen
cW := "wwput.bat "+_OUTBOX+" "+aFiles[nI,1]+" "+FTP_OUTBOX
RUN &cW
NEXT nI

// Для некоторых КА могут быть и файлы подписи. Анализирую и отправляю
nBin := Len(aBin)
FOR nI := 1 TO nBin
cW := "wwput.bat "+_OUTBOX+" "+aBin[nI,1]+" "+FTP_OUTBOX
RUN &cW
NEXT nI

// 04.12.2020
FOR nI := 1 TO nLen DO FileDelete( _OUTBOX+aFiles[nI,1] )
FOR nI := 1 TO nBin DO FileDelete( _OUTBOX+aBin[nI,1] )

ELSE // Старые документы и УПД от Э-КОМ сохраняю средствами программы без "моргания"



где wwput.bat

wput.exe -u --reupload %1%2 ftp://name:password@adress_ftp.ru/%3/%2

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




Пост N: 7306
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.04.21 09:04. Заголовок: Потестил HBCURL. В п..


Потестил HBCURL.
В программе доступ с HBTIP переписал под HBCURL для доступа к FTP.
Глюков нет , работает шустро и стабильно
Так что для доступа к FTP , это отличный выбор.

PS
Проблемы со скобками в именах файлов и символом # , решены.
То что лишний DLL надо с собой таскать не проблема и так тягаю DLL от ADS и PageScript

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




Пост N: 3684
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 10:36. Заголовок: Dima пишет Так что д..


Dima пишет
 цитата:
Так что для доступа к FTP , это отличный выбор.


Поделиться примерчиком можешь ?
Сюда или сам знаешь куда.
Я не осилил по времени, curl.exe с ftp опробовал и вернулся к hbtip (от примера, т.к. время поджимало)

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




Пост N: 7311
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 10:58. Заголовок: SergKis пишет: Поде..


SergKis пишет:

 цитата:
Поделиться примерчиком можешь ?


Да подготовлю

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




Пост N: 7312
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 12:56. Заголовок: По быстрому , на кол..


По быстрому , на коленке.
Скрытый текст



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




Пост N: 3687
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 14:04. Заголовок: Dima пишет По быстро..


Dima пишет
 цитата:
По быстрому , на коленке.


Спасибо Буду разбираться

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




Пост N: 7313
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 16:35. Заголовок: SergKis Есть тонкос..


SergKis
Есть тонкость с HB_CURLOPT_UPLOAD и заливкой файла на FTP.
Даже если curl_easy_perform уже отработал , локально заливаемый
файл остается залоченным самим CURL , пока не сделаем curl_easy_reset
или curl_easy_cleanup

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




Пост N: 7334
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.05.21 16:35. Заголовок: У одного клиента моб..


У одного клиента мобильный инет Киевстар.
Иногда при попытке подключения к FTP и получения LIST
получаю ошибку CURLE_OPERATION_TIMEDOUT (28)
Версия LibCurl 7.76.0
Смотрел логи FTP сервера , там все красиво , ни каких ошибок.
Таймауты я не трогал. Погуглил , но решения не нашел.
Не понятно как решить проблемку.............

PS
У всех остальных у кого нормальный инет (не мобильный) такого не возникало

Возможно (не уверен) 7.76.1 решит проблему
https://github.com/curl/curl/pull/6859

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




Пост N: 7335
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.05.21 20:08. Заголовок: Каким образом перехв..


Каким образом перехватить то что выводит HB_CURLOPT_VERBOSE и писать в файл ?
curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .t.)
Пробовал
HB_CURLOPT_STDERR
HB_CURLOPT_FILE
HB_CURLOPT_WRITEHEADER
Результат нулевой........

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


Пост N: 1663
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.05.21 22:13. Заголовок: Dima пишет: Каким о..


Dima пишет:

 цитата:
Каким образом перехватить то что выводит HB_CURLOPT_VERBOSE и писать в файл ?



The verbose information will be sent to stderr, or the stream set with CURLOPT_STDERR

CURLOPT_STDERR в hbcurl не реализован.
Значит остается
/* NOTE: Redirect STDERR to a file to see the verbose output. */ - примечание из примера к hbcurl

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


Пост N: 1665
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:42. Заголовок: Петр пишет: Значит ..


Петр пишет:

 цитата:
Значит остается...


Или самому написать что-то такое


 цитата:

 
static HB_GARBAGE_FUNC( FILE_release )
{
void ** ph = ( void ** ) Cargo;

/* Check if pointer is not NULL to avoid multiple freeing */
if( ph && *ph )
{
/* Destroy the object */
fclose( ( FILE * ) *ph );

/* set pointer to NULL to avoid multiple freeing */
*ph = NULL;
}
}

static const HB_GC_FUNCS s_gcFILEFuncs =
{
FILE_release,
hb_gcDummyMark
};

static void hb_FILE_ret( FILE * p )
{
if( p )
{
void ** ph = ( void ** ) hb_gcAllocate( sizeof( FILE * ), &s_gcFILEFuncs );

*ph = p;

hb_retptrGC( ph );
}
else
hb_retptr( NULL );
}

static FILE * hb_FILE_par( int iParam )
{
void ** ph = ( void ** ) hb_parptrGC( &s_gcFILEFuncs, iParam );

return ph ? ( FILE * ) *ph : NULL;
}


HB_FUNC( CURL_FOPEN )
{
hb_FILE_ret( hb_fopen( hb_parcx( 1 ), "w+b" ) );
}

HB_FUNC( CURL_EASY_SETOPT2 )
{
if( PHB_CURL_is( 1 ) && HB_ISNUM( 2 ) )
{
PHB_CURL hb_curl = PHB_CURL_par( 1 );
CURLcode res = ( CURLcode ) HB_CURLE_ERROR;

if( hb_curl && ( hb_parni( 2 ) == HB_CURLOPT_STDERR ) )
{
res = curl_easy_setopt( hb_curl->curl, CURLOPT_STDERR, hb_FILE_par( 3 ) );
}

hb_retnl( ( long ) res );
}
else
hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
}




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


Пост N: 1666
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:49. Заголовок: Здесь я использовал ..


Здесь я использовал фрагменты кода из hbpgsql и hbcurl. Это нормально
Добавил curl_easy_setopt2, хотя можно и curl_easy_setopt поправить.

Использование:

 цитата:

 
LOCAL lVerbose := .T.
LOCAL fStdErr := curl_fopen('verb.txt')
...
? curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, lVerbose )
? curl_easy_setopt2( curl, HB_CURLOPT_STDERR, fStdErr )




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


Пост N: 1667
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:55. Заголовок: Dima пишет: С Delay..


Dima пишет:

 цитата:
С DelayLoad хорошее решение
Но такой фичи похоже нет в MINGW , что печально.


Пока лучше с этим не связываться, геморно.

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




Пост N: 7336
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 11:12. Заголовок: Петр пишет: Или сам..


Петр пишет:

 цитата:
Или самому написать что-то такое


Спасибо , только не понятно куда этот кусок кода вставить , в сырец HBCURL и пересобрать ?
Петр пишет:

 цитата:
Пока лучше с этим не связыватся, геморно.


Я уже смирился с этим

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


Пост N: 1668
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 11:17. Заголовок: Dima пишет: Спасибо..


Dima пишет:

 цитата:
Спасибо , только не понятно куда этот кусок кода вставить , в сырец HBCURL и пересобрать ?



Да, добавить в hbcurl\core.c и пересобрать.

В конец файла или я вот у себя добавил перед таким фрагментом

/* Harbour interface */
/* ----------------- */

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




Пост N: 7337
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 11:29. Заголовок: Петр пишет: Да, доб..


Петр пишет:

 цитата:
Да, добавить в hbcurl\core.c и пересобрать.


Да это работает , спасибо

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




Пост N: 7338
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 19:46. Заголовок: Dima пишет: * если..


Dima пишет:

 цитата:
* если LIST средствами CURL получать через HB_CURLOPT_DIRLISTONLY
* там только имена


Был не прав и там еще 1 параметр и если он равен 0 тогда идет полный лист с размерами файлов и тд
Но к сожалению свою маску задать не получится и там всегда *.*
Поэтому юзаем HB_CURLOPT_CUSTOMREQUEST,"LIST "............

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

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