使用php将图像上载到wikimedia

使用php将图像上载到wikimedia,php,api,image-uploading,wikimedia,Php,Api,Image Uploading,Wikimedia,我用api登录到wikimedia服务器,无法上传 我得到这个错误: 谢谢我找回了这个错误 文件上传参数文件不是文件上传;请确保在文章中使用多部分/表单数据,并在内容处理标题中包含文件名 以下是图像上传的代码: $postdata = "action=upload&format=php&filename=Image.jpg&file=@".realpath("Image.jpg")."&token=" . urlencode($_SESSION["csrftoke

我用api登录到wikimedia服务器,无法上传 我得到这个错误: 谢谢我找回了这个错误

文件上传参数文件不是文件上传;请确保在文章中使用多部分/表单数据,并在内容处理标题中包含文件名

以下是图像上传的代码:

$postdata = "action=upload&format=php&filename=Image.jpg&file=@".realpath("Image.jpg")."&token=" . urlencode($_SESSION["csrftoken"]);

$app["curloptionscostun"] = array(
    CURLOPT_COOKIEFILE =>$CookieFile,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_USERAGENT => $app["useragent"],
    CURLOPT_POST => true,
    CURLOPT_HEADER => true,
    CURLOPT_HTTPHEADER => "Content-Type:multipart/form-data"
);

$ch = curl_init();
curl_setopt_array($ch, $app["curloptionscostun"]);
curl_setopt($ch, CURLOPT_URL, $app["apiURL"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$result = unserialize(curl_exec($ch));
if(curl_errno($ch)){
    echo "Error 004: " . curl_error($ch);
}
curl_close($ch);
这样更好吗

curl_setopt(
    $ch,
    CURLOPT_POSTFIELDS,
    array(
        'action' =>'upload',
        'format'=>'php',
        'filename'=>'Image.jpg',
        'token' => urlencode($_SESSION["csrftoken"]),
        'file' => '@' . realpath('Image.jpg')
));

你只是假设什么都不会出错。如果curl_exec失败,它将返回布尔值false,然后尝试取消序列化。试试
$res=curl_exec(…);如果($res==false){die(curl_error($ch));}
并查看结果。谢谢,现在我可以捕获错误了。不要像那样上传文件。curl将接受一个key=value对数组,并在数组中检测
@filename
-类型的上传。但它不会分离预先生成的查询字符串并检查@filename类型的构造。你能给我举个例子说明我应该如何做吗(我不太熟悉使用curl)