所以,为了抓住问题的核心,我想在worpress网站上发布一张图片api (v2).
问题的第一部分是我don\'t have a url or file path, 我只是有raw data of the image 在我之前导出的变量中。
问题的第二部分是,一旦发布(正常情况下),图像appears blank 在管理的媒体库中。
这是我的代码:
if (isset($product[\'priority_web_image\'])) {
$image_name = $product[\'priority_web_image\'][\'filename\'];
$data = $product[\'priority_web_image\'][\'data\'];
$ext = substr($image_name, strpos($image_name, ".") + 1);
if ($ext == \'jpg\') {
$ext = \'jpeg\';
}
$mime_type = \'image/\'.$ext;
$headers = [
\'Authorization\' => \'Bearer \'.$result_auth->access_token,
"cache-control" => "no-cache",
"Content-Type" => $mime_type,
"Content-Disposition" => "attachement;filename=".$image_name,
];
$body = [
"source_url" => $data,
"slug" => "image_test_pimcore",
"status" => "future",
"title" => $image_name,
"media_type" => "image",
"mime_type" => $mime_type
];
$options = [
"headers" => $headers,
"form_params" => $body,
];
$result = $this->WPApi->request("POST", "media", $options);
$bodyAry = json_decode($result->getBody());
//echo print_r($bodyAry);
return $bodyAry;
}
我用狂饮来提出请求。
如果有人知道我错过了什么,我会接受:-)。
最合适的回答,由SO网友:Warshow 整理而成
我找到了解决办法!
file_put_contents($filepath, base64_decode($data));
// Make sure the image exist
if (!file_exists($filepath)){return;}
// Load the image
$file = file_get_contents($filepath);
// Get the filename
$filename = $image_name? $image_name : basename($filepath);
// Initiate curl.
$ch = curl_init();
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_URL, $url .\'/wp-json/wp/v2/media/\' );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $file );
curl_setopt( $ch, CURLOPT_HTTPHEADER, [
"Content-Disposition: form-data; filename=\\"$filename\\"",
\'Authorization: Bearer \' .$result_auth->access_token,
] );
$result = curl_exec( $ch );
curl_close( $ch );
// Decode the response
$api_response = json_decode($result);
return $api_response;