0 レビュー
1 回答
php-メディアライブラリで空白にせずにWordpressAPI投稿画像の生データ
問題の核心をつかむために、 api(v2)を使用してワープレスサイトに画像を投稿したいと思います。
問題の最初の部分は、URLまたはファイルパスがありません、取得した変数に画像の生データがあるだけです。以前に行われたエクスポートから。
問題の2番目の部分は、投稿されると(通常どおり)、管理者のメディアライブラリに画像が空白で表示されることです。
これが私のコードです:
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;
}
リクエストにはGuzzleを使用します。
私が欠けているものを誰かが知っているなら、私はそれを取ります:-)
わからない
0
レビュー
答え :
解決策:
解決策を見つけました!
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;
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。