Użyj curl, aby wysłać plik binarny przez POST z typem zawartości multipart / form-data;

4

Prośba o wysłanie jest wysyłana do:

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

a dane pocztowe są następujące:

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

binarydatagoeshere
------WebKitFormBoundaryB8NNdk2kNdndnnn--

Więc moje pytanie brzmi: jak mogę użyć curl, aby zrobić dokładnie to samo z danymi binarnymi picture.jpg? Znam --data-binary @ myfile.bin, ale jest to zupełnie inne iw tym przypadku łańcuch po granicy np. B8NNdk2kNdndnnnW tym przypadku musi być poprawny, aby prośba została przesłana. Jak mam to zrobić za pomocą curl?

gxg41818
źródło

Odpowiedzi:

1

Myślę, że --formopcja powinna zrobić to, czego potrzebujesz:

curl --form "picture[uploaded_data][email protected];type=image/jpeg" http://www.example.com/example/
Barmar
źródło
0

To jest przykładowy skrypt w do wieloczęściowego POST. Musisz to trochę dostosować:

#!/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;

Sprawdź http://search.cpan.org/~gaas/HTTP-Message-6.06/lib/HTTP/Request/Common.pm

Gilles Quenot
źródło