Como posso fazer uma solicitação de HTTP cURL Post para baixar um arquivo e depois salvar esse arquivo?

4

Ambiente:
Windows 64 cURL build
C: > curl64.exe -V (ersão)
    - curl 7.53.1 (x86_64-w64-mingw32) libcurl / 7.53.1 WinSSL zlib / 1.2.8 WinIDN libssh2 / 1.7.0_DEV
    - Protocolos: dit arquivo ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
    - Características: IDN IPv6 Largefile SSPI Kerberos SPNEGO SSL NTLM libz

Meu site tem um pacote PHP para downloads de arquivos que requer uma postagem HTTP para especificar o arquivo a ser baixado.

Quando estou usando um navegador, recebo uma caixa de diálogo OPEN with / SAVE e posso salvar o arquivo no computador sem problemas. Quando estou usando cURL, o arquivo solicitado apenas transmite para o console.

Como eu faço uma solicitação cURL HTTP Post para baixar um arquivo e depois salvá-lo?

  • Muitos exemplos para enviar um arquivo com uma postagem ...
  • Muitos exemplos para fazer um post em geral ...
  • Muitos exemplos para simplesmente baixar arquivos (-O / o) ...

Mas não consigo encontrar um exemplo de salvar o arquivo que um comando Post retorna.

Eu tentei estas três linhas de comando de curvas:

C: & curl64.exe -d "download = XYZ.zip & e-mail = & submit = Fazer download do link"

C: & curl64.exe -d "download = XYZ.zip e-mail = & submit = Download" -O XYZ.zip link
curl: o nome do arquivo remoto não tem comprimento!

C: & curl64.exe -d "download = XYZ.zip & e-mail = & submit = Fazer download do link" > XYZ.zip
Acesso negado.

Nos dois primeiros exemplos, o conteúdo do arquivo é transmitido para o console, em vez de o arquivo ser salvo ou fornecer uma opção para salvá-lo.

No terceiro exemplo, tentei redirecionar a saída, mas recebi um "Acesso negado". erro. Eu sou um administrador local no sistema Windows. Eu tentei diretórios diferentes. Ainda recebe o mesmo erro.

    
por CBruce 07.03.2017 / 01:21

1 resposta

1

Depois de muita leitura (a noite toda) ... Eu percebi que obviamente é ruim fazer pesquisa quando você está exausta e deveria estar dormindo em vez disso. [sorriso]

Anteriormente, vi muitos exemplos de cURL em que alguns usavam a opção -O e outros que usavam a opção -o para downloads de arquivos. Como tudo ficou confuso para mim, não percebi que eram duas opções diferentes. Depois de ler a ajuda do cURL pela centésima vez, finalmente vi a diferença:

  • -O é para DOWNLOADING de um arquivo
  • -o é para REDIRECIONAR a saída de cURL para um arquivo em vez de stdout

Esta linha de comando funciona:

C: \ cURLtest > curl64.exe -d "download = XYZ.zip & e-mail = & submit = Download" -o XYZ.zip link

Para qualquer um que tenha gasto tempo pesquisando o assunto (que não foi) ... Por favor, desculpe este manequim por desperdiçar seu tempo.

    
por 07.03.2017 / 18:19