使用WP-REST-API v2 II添加介质

时间:2019-01-16 作者:Brethlosze

我正在this exact question, 2015年被问及关于通过WP REST API添加媒体的问题。

迄今为止我的代码:

curl -s -X POST http://www.example.com/wp-json/wp/v2/media/ -H "Content-Type: application/json" -H "Content-Disposition: attachment; filename=image.png" -H "Authorization: Basic $base64credentials " -d \'{"title":"mymedia", "alt-text":"", "caption":"", "description":"", "slug":"myslug", "status":"publish", "date":"2019-01-16T00:00:00", "post":$id}\'

我目前的结果:

{"code":"rest_upload_sideload_error","message":"Sorry, this file type is not permitted for security reasons.","data":{"status":500}}
当我将扩展替换为.txt, 即使文件不存在(??),调用也可以工作,并生成损坏的空媒体对象。其他关于后期创建和后期更新的调用可以正常工作。通过切换到https 服务器,并使用curl -k 选项,同样的情况也会发生。

原因可能是基本授权或HTTP或HTTPS问题吗?

今天应该怎么做?

我缺少一些标题或语法?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

根据StackOverflow的回答,我怀疑这样的方法会奏效:

base64credentials="...... "
curl --request POST \\
--url "http://www.yoursite.com/wp-json/wp/v2/media" \\
--header "cache-control: no-cache" \\
--header "content-disposition: attachment; filename=tmp" \\
--header "authorization: Basic $base64credentials" \\
--header "content-type: image/png" \\
--data-binary "@/home/web/tmp.png" \\
--location
这应该使用tmp.png 创建并上载全新附件。然后,您可以解析结果以检索ID或成功/失败,并对其执行其他操作,例如设置特色图像元等。

我确实注意到需要调整授权的资本化,您需要调整内容类型和数据二进制参数以匹配您的目标文件,请告诉我这是怎么回事

https://stackoverflow.com/questions/37432114/wp-rest-api-upload-image

首先,您的内容类型应该是image/jpeg 而不是application/json, 请记住,内容类型应该反映您正在传递的数据,而POST media请求需要图像。

为了适应内容类型,您必须做的另一个更改是传递数据的方式。请尝试将其作为二进制文件传递,而不是使用source\\u url参数发送。

我要提到的最后一件事是,wp/v2调用有时返回3XX状态。跟踪这些重定向并将这些请求重做到这些新URL将非常有用。