4

Среда:
Windows 64 cURL build
C:> curl64.exe -V(ersion)
- curl 7.53.1 (x86_64-w64-mingw32) libcurl/7.53.1 WinSSL zlib/1.2.8 WinIDN libssh2/1.7.0_DEV
- Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
- Особенности: IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz

На моем веб-сайте есть пакет PHP для загрузки файлов, для которого требуется HTTP Post, чтобы указать файл для загрузки.

Когда я использую браузер, я получаю диалог ОТКРЫТЬ с /SAVE и могу без проблем сохранить файл на своем компьютере. Когда я использую cURL, запрошенный файл просто передается на консоль.

Как мне сделать запрос cURL HTTP Post, чтобы загрузить файл и затем сохранить его?

  • Множество примеров загрузки файла с постом ...
  • Много примеров для того, чтобы сделать Пост в общем ...
  • Множество примеров для простой загрузки файлов (-O/o)...

Но я не могу найти пример сохранения файла, который возвращает команда Post.

Я пробовал эти три командной строки curl:

C:> curl64.exe -d "download = XYZ.zip & email = & submit = Download" http://www.example.com/downloads/dl.php

C:> curl64.exe -d "download = XYZ.zip & email = & submit = Download" -O XYZ.zip http://www.example.com/downloads/dl.php
curl: имя удаленного файла не имеет длины!

C:> curl64.exe -d "download = XYZ.zip & email = & submit = Download" http://www.example.com/downloads/dl.php > XYZ.zip
В доступе отказано.

В первых двух примерах содержимое файла передается на консоль вместо сохраняемого файла или дает мне возможность сохранить его.

В третьем примере я попытался перенаправить вывод, но получил «Доступ запрещен». ошибка. Я локальный администратор в системе Windows. Я пробовал разные каталоги. Тем не менее получить ту же ошибку.

1 ответ1

1

После много чтения (всю ночь)... Я понял, что, очевидно, плохо проводить исследования, когда вы перегорели и вместо этого должны действительно спать. [Гринь]

Ранее я видел слишком много примеров cURL, где некоторые использовали опцию -O, а другие использовали опцию -o для загрузки файлов. Поскольку все размылось для меня, я не осознавал, что это были два РАЗНЫХ варианта. Прочитав справку по cURL в сотый раз, я наконец увидел разницу:

  • -O для ЗАГРУЗКИ файла
  • -o для перенаправления вывода cURL в файл вместо stdout

Эта командная строка работает:

C:\cURLtest> curl64.exe -d "download = XYZ.zip & email = & submit = Download" -o XYZ.zip http://www.example.com/downloads/dl.php

Для тех, кто потратил время на изучение проблемы (это не так)... Пожалуйста, извините эту куклу за трату вашего времени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .