Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Wordpress media_sideload_图像-下载http://placekitten.com/100/100?_Image_Wordpress_Url Rewriting_Download_Media - Fatal编程技术网

Image Wordpress media_sideload_图像-下载http://placekitten.com/100/100?

Image Wordpress media_sideload_图像-下载http://placekitten.com/100/100?,image,wordpress,url-rewriting,download,media,Image,Wordpress,Url Rewriting,Download,Media,媒体侧载图像 WordPress有一个名为的函数。它用于上载图像并将其附加到媒体库 我接受这样的图像URL: h**p://s.wordpress.org/style/images/wp-header-logo.png 重写的URL web上的某些URL被重写,例如: http://placekitten.com/100/100?name=image.jpg 错误消息: 很抱歉,出于安全原因,不允许使用此文件类型 文件类型是正确的JPG文件,但缺少文件扩展名 在我的例子中,添加额外的MIME

媒体侧载图像

WordPress有一个名为的函数。它用于上载图像并将其附加到媒体库

我接受这样的图像URL:

h**p://s.wordpress.org/style/images/wp-header-logo.png

重写的URL

web上的某些URL被重写,例如:

http://placekitten.com/100/100?name=image.jpg

错误消息:

很抱歉,出于安全原因,不允许使用此文件类型

文件类型是正确的JPG文件,但缺少文件扩展名

在我的例子中,添加额外的MIME类型不起作用

我尝试了这个函数,但它对我没有帮助,因为它的文件扩展名没有设置

add_filter('upload_mimes', 'add_custom_upload_mimes');
function add_custom_upload_mimes($existing_mimes){
    $existing_mimes['jpeg'] = 'image/jpeg';
    return $existing_mimes;
}
问题


如何上载URL h**p://placekitten.com/100/100及媒体侧载图片或类似内容,以将图片附加到媒体库?

深入核心,您似乎需要
未过滤的上传功能才能上载不带扩展名的文件:

if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
    return $upload_error_handler( $file, __( 'Sorry, this file type is not permitted for security reasons.' ));
根据报告:

默认情况下,此功能不适用于任何角色(包括超级管理员)。需要通过定义以下常量来启用该功能:

定义此常量后,单个站点安装上的所有角色都将获得未筛选的上传功能,但只有超级管理员才能获得多站点安装上的功能


当我需要这个解决方案时,我昨天读了你的问题。 24小时后我找到了答案

这是完整的解决方案

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

$image_url = "http://domain.com/blog/23092839823";
$image_tmp = download_url($image_url);

    if( is_wp_error( $image_tmp ) ){
        echo "<br> Image Download Fail:";
    }else {
        $image_size = filesize($image_tmp);
        $image_name = basename($image_url) . ".jpg"; // .jpg optional


        //Download complete now upload in your project
        $file = array(
           'name' => $image_name, // ex: wp-header-logo.png
           'type' => 'image/jpg',
           'tmp_name' => $image_tmp,
           'error' => 0,
           'size' => $image_size
        );


        //This image/file will show on media page...
        $thumb_id = media_handle_sideload( $file, $post_id, $desc);
        set_post_thumbnail($post_id, $thumb_id); //optional

        echo "<br> Image Save ";
    }
require_once(ABSPATH.'wp admin/includes/media.php');
require_once(ABSPATH.'wp admin/includes/file.php');
require_once(ABSPATH.'wp admin/includes/image.php');
$image_url=”http://domain.com/blog/23092839823";
$image\u tmp=download\u url($image\u url);
如果(是错误($image\u tmp)){
echo“
图像下载失败:”; }否则{ $image\u size=文件大小($image\u tmp); $image\u name=basename($image\u url)。“.jpg”//.jpg可选 //下载完成现在上传到您的项目 $file=array( 'name'=>$image\u name,//ex:wp-header-logo.png 'type'=>'image/jpg', 'tmp_name'=>$image_tmp, “错误”=>0, “大小”=>$image\u大小 ); //此图像/文件将显示在媒体页面上。。。 $thumb\u id=media\u handle\u sideload($file、$post\u id、$desc); set_post_缩略图($post_id,$thumb_id);//可选 回显“
图像保存”; }
今天,我遇到了同样的问题,想出了一个有点肮脏但却成功的解决方法。事实证明,media_sideload_image只检查url中的.jpg(或任何图像)扩展名,因此如果您将其添加到链接的末尾,它应该可以工作

因此,您只需在url末尾添加不会改变输出的内容,例如:

http://placekitten.com/100/100?name=image.jpg

我不能说它一直有效,但它在这里有效(经过测试)

这真的很有帮助!只要名称和类型定义正确,文件名上没有扩展名并不重要。