我有一个奇怪的问题,让我头痛不已。这可能是我忽视的一件小事,但就我的一生而言,我无法理解它。
前提是:
我向wp环境中的自定义注册api端点发出POST请求,并从表单向其发送json数据。内容类型设置正确,如果我通过转储$请求进行调试->;get\\u body()它显示我传递的正确数据然而,我也发送了base64编码的图像数据,这些数据来自文件读取器。如果向要发送的数据中添加另一项,并将base64字符串作为其值,则转储将变为NULL。从json中取出base64字符串,使转储再次正常我也尝试增加最大上传大小和帖子大小,但是,由于我作为测试使用的文件是20 KB,我认为这不是问题所在。
我希望有人能帮助我认识到我的错误。
请注意,发送的json中没有错误,因为我使用https://jsonformatter.curiousconcept.com/
下面是一段代码片段。请注意,URL在这里不是真实的,但在我的环境中是真实的。此外,由于字符限制,我无法在代码段中发布整个base64图像,但请确保它是正确的。我甚至试过使用1px x x 1px透明图像,我也遇到了同样的问题。
var image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QDeRXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAAA4YwAA6AMAADhjAADoAwAABwAAkAcABAAAADAyMTABkQcABAAAAAECAwCGkgcAFgAAAMAAAAAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAABgCAAADoAQAAQAAAGIBAAAAAAAA...";
var data = {
\'test\': \'hello world\',
\'image\': image
};
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify(data);
var requestOptions = {
method: \'POST\',
headers: myHeaders,
body: raw,
redirect: \'follow\'
};
fetch("/wp-json/test/v1/testapi", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log(\'error\', error));