You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP CURL调用Toonify API时遭遇value_error.missing错误求助

解决Toonify API调用中"image字段必填"的问题

我来帮你搞定这个问题,你遇到的错误提示:

{"detail":[{"loc":["body","image"],"msg":"field required","type":"value_error.missing"}]}

很明确,API根本没收到要求的image字段,问题出在这几个关键地方:

  • 参数名写错了:你代码里POST字段用的是name,但Toonify API要求的上传字段名是image,这是最直接的原因。
  • 文件上传方式过时:PHP 5.5之后就废弃了用@前缀指定文件的方式,这种写法现在无法正确生成符合规范的multipart/form-data请求,得用CURLFile类来处理文件上传。
  • 手动设置Content-Type可能冲突:当你用数组+CURLFile作为POST参数时,CURL会自动生成正确的multipart/form-data头并带上边界值,手动设置反而可能导致请求格式错误,建议删掉这个手动设置的头。

修正后的代码

$ch = curl_init();

// 关键:使用CURLFile,并且字段名改为API要求的"image"
$params = [
    'image' => new CURLFile('alex.jpg', 'image/jpeg')
];

curl_setopt($ch, CURLOPT_URL, 'https://toonify.p.rapidapi.com/v0/toonify');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 测试用,生产环境建议开启SSL验证

$headers = [
    'Accept: image/jpeg',
    'X-Rapidapi-Host: toonify.p.rapidapi.com',
    'X-Rapidapi-Key: mey_key' // 替换成你的有效RapidAPI密钥
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
print_r($result);

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

额外注意事项

  • 确认alex.jpg的路径正确,如果是相对路径,可通过getcwd()查看PHP当前工作目录,或者直接用绝对路径(比如/var/www/uploads/alex.jpg)更稳妥。
  • 生产环境下请把CURLOPT_SSL_VERIFYPEER设为true,避免SSL安全风险。
  • 检查你的RapidAPI密钥是否有效,有没有权限调用Toonify API接口。

内容的提问来源于stack exchange,提问作者zineddine reda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:27:41