Форум » Для флейма » Как скачать файл с FTP с помощью CURL.EXE ? » Ответить
Как скачать файл с FTP с помощью CURL.EXE ?
Dima: Что то не фурычит. curl.exe --ftp-pasv -O ftp://user:pass@194.11.11.11/W_99^[sklad]#E3EA33012.zip curl: (3) [globbing] bad range in column 49 List отрабатывает нормально curl.exe --ftp-pasv ftp://user:pass@194.11.11.11
Ответов - 24, стр:
1 2 All
PSP: Дима, в квадратных скобках указывается диапазон. Поэтому и ошибка. http://osxh.ru/terminal/command/curl
Dima: PSP При чем тут диапазон если мне нужно слить файл с именем W_99^[sklad]#E3EA33012.zip Или я чего не понял ?
Dima: а понял ;) CURL считает что это диапазон , но оно ведь не так. и как выкрутится ?
PSP: Таков синтаксис этой утилиты. Квадратные скобки зарезервированы под её параметры. Посмотри ссылку. И ошибка говорит о неверном диапазоне: "bad range..."
PSP: Dima пишет: а понял ;) CURL считает что это диапазон , но оно ведь не так. и как выкрутится ? Посмотри параметр --globoff
Dima: смотрел уже. с ним curl: (78) RETR response: 550
PSP: Ошибка curl 78: Ресурс, на который, ссылается URL не существует Ошибка ftp 550: Запрошенная функция не реализована, файл не доступен, например, не найден Может действительно такого файла нет?
Dima: PSP пишет: Может действительно такого файла нет? Есть и я его спокойно скачиваю через FlashFXP Я его туда и положил на FTP и ни кто кроме меня его от туда не уберет Замкнутый круг блин
SergKis: Dima а для cmd.exe вроде:Специальные символы, которые требуют обязательного заключения в кавычки: <пробел>&()[]{}^=;!'+,~". может имя файла в итоге не то получается ?
Dima: SergKis Для CMD да , но это не тот случай. Хотя я пробовал и с ними. Результат ноль. Буду пробовать HBCURL , хотя там ни описания нет и сам черт ногу сломит........
Dima: Запарил меня уже CURL.EXE Есть файл ATr^_[123311].zap Стандартно не качается и выдает ошибку 78 curl.exe --ftp-pasv -O ftp://login:pass@181.111.11.11/ATr^_[123311].zap Есть 2 варианта решения curl.exe --ftp-pasv -g -O ftp://login:pass@181.111.11.11/ATr^_[123311].zap или же вот так curl.exe --ftp-pasv -O ftp://login:pass@181.111.11.11/ATr^_\[123311\].zap А вот как быть если надо скачать файл в имени которого есть # Вот такой файл e#1.ddd не качается ни с опцией -g ни с фокус-покусом и знаками \ Ошибку 78 выдаёт и всё , зараза...... Как быть ? Интересует решение под CURL.EXE и LIBCURL
SergKis: Dima Пробовал задавать для подробной инф. curl.exe -v ... или еще подробней curl.exe -trace info.txt ... еще есть -I но ее не помню, надо искать
Dima: SergKis Что интересно средствами Curl.exe , команда List его показывает... Видит око, да зуб неймет Попандос какой то ))
SergKis: Dima А ты средствами hb (hmg SAMPLES\Advanced\FtpClient) пробовал ? Я подергался с wput.exe, wget.exe, curl.exe а пробнул пример он пошел, на нем и оставил. Сделал List просмотр с выбором и просто по имени выбрать (если в List 1 файл), встроил в задачу. Таких, заковыристых, имен нет у меня
SergKis: PS и -trace что нибудь дает, если добавить к твоим параметрам curl ?
SergKis: PS2 если сам закидываешь, может через Base64 пропусти cFile := hb_Base64Encode( cFile, Len( cFile ) ) cFile := hb_Base64Decode( cFile )
Dima: SergKis пишет: и -trace что нибудь дает Хрен знает не заработала эта команда А вот что касается файлика e#1.ddd то при запросе Curl запрашивает не e#1.ddd а e То есть все что после # и включая его самого всё сжирается блин
SergKis: Dima пишет Curl запрашивает не e#1.ddd а e и ".../e#1.ddd" не помогает ? Хрен знает не заработала эта команда ты имя файла для вывода дал ? Я что то получал в пробах, если не спутал чего, давно было. -trace info.txt
Dima: SergKis пишет: и ".../e#1.ddd" не помогает ? Неа Но нашел колхозное решение в инете Если было и не качало и файл запрашивался как e17 curl.exe --ftp-pasv -v -O ftp://login:user@181.11.11.11/e17#1.ddd то подмена # на %23 (16-ричное значение) , запрос строит верно curl.exe --ftp-pasv -v -O ftp://login:user@181.11.11.11/e17%231.ddd и файл сливается , но собака и называется он e17%231.ddd Цирк ёпта )) ЗЫ Попробую этот фокус в LIBCURL , он несколько иначе себя ведет во всяком случае по умолчанию с [] у него нет проблем а вот с # похожая засада
rvu: Dima пишет: и файл сливается , но собака и называется он e17%231.ddd У себя уже и переименовать, наверное, можно. Сразу после получения.
Dima: Фуф победил вроде под LIBCURL В общем если надо слить файл Tr^_#[123311].zap То подход примерно такой curl_easy_reset( curl ) curl_easy_setopt( curl, HB_CURLOPT_DOWNLOAD ) curl_easy_setopt( curl, HB_CURLOPT_URL, cftp+"/"+ "Tr^_%23[123311].zap") curl_easy_setopt( curl, HB_CURLOPT_USERPWD, cuser+":"+cpassword ) curl_easy_setopt( curl,HB_CURLOPT_FTP_RESPONSE_TIMEOUT,10) curl_easy_setopt( curl,HB_CURLOPT_FTP_USE_EPSV,0) // 0- PASV режим 1- EPSV curl_easy_setopt( curl, HB_CURLOPT_DL_FILE_SETUP, hb_DirSepAdd(localdir)+"Tr^_#[123311].zap" ) nerr:=curl_easy_perform( curl )
Петр: Dima пишет: а вот с # похожая засада The characeter # indicates the URL fragment. You must URL encode the # character so that it is not interpreted as a fragment separator. Once encoded, the server will parse the URL as expected and the correct file name will be generated. взято отсюда
Dima: Петр Шустро однако Я шарился шарился в гуглях и на этот линк не попадал , иначе бы раньше решил проблему ))
Dima: Dima пишет: curl_easy_setopt( curl, HB_CURLOPT_URL, cftp+"/"+ "Tr^_%23[123311].zap") Короче вот так можно сделать curl_easy_setopt( curl, HB_CURLOPT_URL, cftp+"/"+ hb_StrReplace(cfile,"#",{"%23"})) Dima пишет: curl_easy_setopt( curl, HB_CURLOPT_URL, cftp+"/"+ hb_StrReplace(cfile,"#",{"%23"})) А вот тут уже можно не оборачивать в hb_StrReplace curl_easy_setopt( curl, HB_CURLOPT_POSTQUOTE, { "DELE " + cfile } )
полная версия страницы