Python multipart/form-data

Tôi đang cố gắng đăng một hình ảnh bằng cURL trong PHP bằng cách sử dụng tiêu đề dữ liệu nhiều phần/biểu mẫu vì API mà tôi đang gửi tới đang mong đợi hình ảnh được gửi dưới dạng nhiều phần

Nội dung chính Hiển thị

  • Mã cURL PHP để gửi tệp
  • Bài viết đề xuất cho bạn
  • Giới thiệu về Harish
  • Làm cách nào để chuyển một tệp nhiều phần trong Curl?
  • Làm cách nào để chuyển dữ liệu biểu mẫu trong Curl PHP?
  • Làm cách nào để đăng dữ liệu biểu mẫu bằng Curl?
  • Curlopt_postfields là gì?

Tôi không gặp vấn đề gì khi nói chuyện với API với các yêu cầu khác;

Tôi đang sử dụng biểu mẫu này ở phía khách hàng


    
    

và đây là máy chủ mà tôi đang đăng lên [ở đây tôi đang cố gắng đăng dữ liệu này lên một API]

$ch = curl_init[$url];
curl_setopt [$ch, CURLOPT_POST, 1];
curl_setopt [$ch, CURLOPT_POSTFIELDS, $imgRawData]; // "value1", "another_field2"=>"anothervalue"];

// files to upload
$filenames = array["/tmp/1.jpg", "/tmp/2.png"];

$files = array[];
foreach [$filenames as $f]{
   $files[$f] = file_get_contents[$f];
}

// URL to upload to
$url = "//site.com/upload";


// curl

$curl = curl_init[];

$url_data = http_build_query[$data];

$boundary = uniqid[];
$delimiter = '-------------' . $boundary;

$post_data = build_data_files[$boundary, $fields, $files];


curl_setopt_array[$curl, array[
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  //CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => $post_data,
  CURLOPT_HTTPHEADER => array[
    //"Authorization: Bearer $TOKEN",
    "Content-Type: multipart/form-data; boundary=" . $delimiter,
    "Content-Length: " . strlen[$post_data]

  ],

  
]];


//
$response = curl_exec[$curl];

$info = curl_getinfo[$curl];
//echo "code: ${info['http_code']}";

//print_r[$info['request_header']];

var_dump[$response];
$err = curl_error[$curl];

echo "error";
var_dump[$err];
curl_close[$curl];




function build_data_files[$boundary, $fields, $files]{
    $data = '';
    $eol = "\r\n";

    $delimiter = '-------------' . $boundary;

    foreach [$fields as $name => $content] {
        $data .= "--" . $delimiter . $eol
            . 'Content-Disposition: form-data; name="' . $name . "\"".$eol.$eol
            . $content . $eol;
    }


    foreach [$files as $name => $content] {
        $data .= "--" . $delimiter . $eol
            . 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $name . '"' . $eol
            //. 'Content-Type: image/png'.$eol
            . 'Content-Transfer-Encoding: binary'.$eol
            ;

        $data .= $eol;
        $data .= $content . $eol;
    }
    $data .= "--" . $delimiter . "--".$eol;


    return $data;
}


Một số dịch vụ web yêu cầu tải lên hoặc đăng một số tệp lên máy chủ. Trong bài đăng này, chúng tôi sẽ giải thích cho bạn Cách gửi tệp qua Form Post. Chúng tôi đang sử dụng cURl để gửi tệp trên máy chủ

cURL là thư viện rất mạnh, bạn có thể Nhận hoặc Đăng dữ liệu bằng phương pháp cURL

Mã cURL PHP để gửi tệp

Trước tiên hãy tạo một biểu mẫu HTML đơn giản để tải tệp lên

Đảm bảo rằng biểu mẫu sử dụng giá trị mã hóa 'multipart/form-data'. Thao tác này sẽ đăng dữ liệu ở dạng mã hóa URL

Vui lòng chọnatệp.

Chủ Đề