Use o curl para enviar o arquivo binário através do POST com o tipo de conteúdo multipart / form-data;

4

Uma solicitação de postagem é feita para:

http://www.example.com/example/

e os dados da postagem são os seguintes:

------WebKitFormBoundaryB8NNdk2kNdndnnn
Content-Disposition: form-data; name="picture[uploaded_data]"; filename="picture.jpg"
Content-Type: image/jpeg

binarydatagoeshere
------WebKitFormBoundaryB8NNdk2kNdndnnn--

Então, minha pergunta é: como posso usar o curl para fazer exatamente a mesma coisa com os dados binários de picture.jpg? Eu sei de --data-binary @ myfile.bin, mas isso é completamente diferente e, neste caso, a string após Boundary, por exemplo, B8NNdk2kNdndnnn , neste caso, precisa ser válida para a solicitação passar. Então, como faço tudo isso usando o curl?

    
por gxg41818 30.12.2014 / 00:39

2 respostas

1

Acho que a opção --form deve fazer o que você precisa:

curl --form "picture[uploaded_data][email protected];type=image/jpeg" http://www.example.com/example/
    
por 30.12.2014 / 23:45
0

Este é um script de exemplo em para o POST multipart. Você precisa adaptar um pouco:

#!/usr/bin/env perl

use strict; use warnings;
use WWW::Mechanize;

my $m = WWW::Mechanize->new(
    autocheck => 1,
    agent_alias => 'Mozilla',
    cookie_jar => {},
    ssl_opts => {verify_hostname => 0},
    quiet => 0,
);
$m->get("http://domain.tld");                                                   

$m->post('https://domain.tld/send',
    Content_Type => "form-data",
    Content => [
        'picture[uploaded_data]' => 'foobar',
        file => [ '/path/to/image', 'image_name', 'Content-Type' => 'image/jpeg' ]
    ]
);

print $m->content;

Verifique se o link

    
por 30.12.2014 / 18:22