POST를 통해 콘텐츠 유형이 multipart/form-data인 바이너리 파일을 보내려면 컬을 사용하세요.

POST를 통해 콘텐츠 유형이 multipart/form-data인 바이너리 파일을 보내려면 컬을 사용하세요.

다음 주소로 요청을 보내주세요:

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

게시물 데이터는 다음과 같습니다.

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

binarydatagoeshere
------WebKitFormBoundaryB8NNdk2kNdndnnn--

제 질문은, picture.jpg의 바이너리 데이터에 대해 정확히 동일한 작업을 수행하기 위해 컬을 어떻게 사용합니까?입니다. --data-binary @myfile.bin에 대해 알고 있지만 이것은 완전히 다릅니다. 이 경우 경계 뒤의 문자열( B8NNdk2kNdndnnn이 경우처럼)이 요청을 통과하려면 유효해야 합니다. 그렇다면 컬을 사용하여 이 작업을 어떻게 수행합니까?

답변1

내 생각에는 이 --form옵션이 귀하의 필요에 적합할 것 같습니다.

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

답변2

다음은 샘플 스크립트입니다.여러 부분을 게시합니다. 약간 조정해야 합니다.

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

확인하다http://search.cpan.org/~gaas/HTTP-Message-6.06/lib/HTTP/Request/Common.pm

관련 정보