WP_UPLOAD_BITS不检索没有扩展名的图像

时间:2013-07-23 作者:Greeso

我使用以下代码从web检索图像:

$get = wp_remote_get($image_file_name);
$mirror = wp_upload_bits(basename($image_file_name), \'\', wp_remote_retrieve_body($get));
此代码适用于所有类型的图像,除非图像没有扩展名。例如,如果图像文件名为:

http://www.some_site.com/image_filename.jpg
然后运行上面的代码就可以了。然而,链接

http://www.some_site.com/another_image_filename_but_without_extension
将出现以下错误:

Array
(
    [error] => Invalid file type
)
经进一步调查,wp\\U upload\\U bits中似乎包含以下代码:

$wp_filetype = wp_check_filetype( $name );
if ( ! $wp_filetype[\'ext\'] && ! current_user_can( \'unfiltered_upload\' ) )
    return array( \'error\' => __( \'Invalid file type\' ) );
它似乎正在检查扩展是否确实存在,如果不存在,则存在错误。

所以我的问题是,我如何解决这个问题来下载没有扩展的图像?

谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我不知道无扩展名图像的URL来测试这一点,但我认为服务器必须通过content-type 标题。如果是这样的话,你应该能够$get[\'headers\'][\'content-type\'], 找出它是什么类型的图像,并在其上添加适当的扩展名$image_file_name 发送到之前wp_upload_bits.

您已检索到该信息。看看var_dump($get), 所以我们的想法是这样做:

$get = wp_remote_get($image_file_name);
$ending = file_ending_parsing_function($get[\'headers\'][\'content-type\']);
$mirror = wp_upload_bits(basename($image_file_name.$ending), \'\', wp_remote_retrieve_body($get));
wp_remote_retrieve_body 只需获取中已存在的信息$get, 检索人wp_remote_get, 因此,您不必下载一个不存在的文件,我运行了一个测试来确认wp_upload_bits 只要扩展匹配,就可以选择任何内容。事实上,初步测试表明,它只需要有一个扩展。我可以上传.jpg 并将其重命名为.gif 扩展名,而无需操作文件。

结束

相关推荐

Resize uploaded images

Possible Duplicate:Resizing all images 我有一个我建立的新闻门户,客户想要不同大小的特色图片。我已经准备好了我想要的第一个尺寸,他们已经发布了大约200多篇帖子,都准备好了这个尺寸。现在,如果我改变大小,它只会在新帖子上改变/或重新上传当前的特色图片(手工操作太多了)。我的问题是,有没有办法调整上传图像的大小?