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?

Odpowiedzi:


1

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

curl --form "picture[uploaded_data]=@picture.jpg;type=image/jpeg" http://www.example.com/example/

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.