【问题标题】:Specifying the Content-Type of each part of multipart/form-data in PHP's curlPHP的curl中指定multipart/form-data各部分的Content-Type
【发布时间】:2010-07-09 00:33:00
【问题描述】:

如何指定 multipart/form-data 请求的特定部分的内容类型?图像的内容类型以application/octet-stream 发送,但服务器期望它为image/jpeg。这会导致服务器拒绝我的请求。

$data["file"] = "@/image.jpg";
$data["title"] = "The title";
$data["description"] = "The description";

//make the POST request
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);

这是请求的相关部分:

Content-Type: multipart/form-data; boundary=----------------------------fc57f743c490

------------------------------fc57f743c490
Content-Disposition: form-data; name="file"; filename="NASA-23.jpg"
Content-Type: application/octet-stream

我希望它是:

Content-Type: multipart/form-data; boundary=----------------------------fc57f743c490

------------------------------fc57f743c490
Content-Disposition: form-data; name="file"; filename="NASA-23.jpg"
Content-Type: image/jpeg

【问题讨论】:

    标签: php curl multipartform-data


    【解决方案1】:

    你会做这样的事情,

    $data["file"] = "@/image.jpg;type=image/jpeg";
    
    //make the POST request
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL,$url);
    curl_setopt($curl, CURLOPT_VERBOSE, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($curl);
    

    【讨论】:

    • $header 未在示例中定义。是必须的吗?
    猜你喜欢
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 2018-12-16
    • 2015-09-19
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多