0

我正在使用instagram PHP 抓取工具每天一次从 Instagram 获取一些图像,现在我想将它们保存到 WP 以符合新的 Instagram API“跨域资源策略:同源”限制。

不幸的是,下载图像对我来说似乎是个问题。我得到这样的 URL:

https://scontent-frt3-2.cdninstagram.com/v/t51.2885-15/e35/s1080x1080/180944446_818094295796893_2664338416777947736_n.jpg?tp=1&_nc_ht=scontent-frt3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=IeiX9KxK83IAX_dtO18&edm=APU89FABAAAA&ccb= 7-4&oh=78ad506e5ddbbcf3adfe3000d0a9a794&oe=60B3A80A&_nc_sid=86f79a

应该只是保存 jpg 但不幸的是 file_get_contents 返回一个空文件。

我目前正在使用此代码:

$imagetype = end(explode('/', getimagesize($imageurl)['mime']));
$uniq_name = date('dmY').''.(int) microtime(true); 
$filename = $uniq_name.'.'.$imagetype;

$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . '/' . $filename;
$contents= file_get_contents($imageurl);
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);

$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => $filename,
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, $uploadfile );
$imagenew = get_post( $attach_id );
$fullsizepath = get_attached_file( $imagenew->ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath );
wp_update_attachment_metadata( $attach_id, $attach_data ); 
$this->conlog(wp_get_attachment_url($attach_id));

return wp_get_attachment_url($attach_id);

$imagetype 也是空的,因为 getimagesize()['mime'] 是空的。

我真的不知道如何下载图像,因为我不太熟悉 PHP。你知道如何最好地存档吗?非常感谢!

4

1 回答 1

0

对你来说$imagetype,使用 pathinfo https://www.php.net/manual/fr/function.pathinfo.php

$imagetype = pathinfo($image_url, PATHINFO_EXTENSION);
于 2021-05-03T14:00:29.257 回答