Image Upload from URL

时间:2012-04-24 作者:Travis Pflanz

我真的很喜欢SE从URL上传图像的方式(我相信很多人都喜欢!)。我一直在找,但找不到,is there a plugin or a method similar to this available for WordPress?

我知道图像可以uploaded and crunched directly from a URL 单击“上载/插入媒体”>>“从计算机”>>“选择文件”,然后在“文件名”框中输入图像URL

enter image description here

这是一个很好的特性,但不是很广为人知(实际上我刚刚发现它)。我想要一些更像SE的东西,其中有一个选项可以让用户知道如何添加图像URL。

如何简单地将上载文件字段添加到媒体上载程序的新选项卡中?

以下是How to add a new tab in Media Upload page in wordpress, 但我只想向该选项卡添加一些文本和文件上载字段。有什么想法吗?我在WordPress Codex中找不到任何直接涉及此功能或文件上载字段的内容。

谢谢

4 个回复
最合适的回答,由SO网友:Travis Pflanz 整理而成

WordPress插件目录-Grab & Save

这个插件允许您从远程url抓取图像并保存到您自己的wordpress媒体库中。这样,您就不会担心远程映像是否被其所有者删除了。这也节省了您将图像下载到本地计算机并再次上传到您自己的wordpress的步骤。

抓取图像后,wordpress会像上传图像一样提示您“插入帖子”或“更改属性”。

SO网友:fischi

你可以编写一个php脚本,或者在这里为这段代码制作你自己的插件,我在我的一个项目中使用了它,在那里我必须导入大量图像。

首先,获取图像,并将其存储在上载目录中:

$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir[\'path\'] . \'/\' . $filename;

$contents= file_get_contents(\'http://mydomain.com/folder/image.jpg\');
$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 );
瞧,我们开始了。您还可以在附件数组中设置其他各种参数。如果你有一个URL数组或类似的东西,你可以在循环中运行这个脚本,但要注意图像函数会占用大量的时间和内存来执行。

SO网友:Rajilesh Panoli

您可以使用这些功能download_url()wp_handle_sideload().

download_url()

使用WordPress HTTP类将url下载到本地临时文件。请注意,调用函数必须取消文件的链接()。

wp_handle_sideload()

处理侧载,这是从另一台服务器检索媒体项的过程,而不是传统的媒体上载。此过程包括清理文件名、检查mime类型的扩展名,以及将文件移动到uploads目录中的相应目录。

示例:

// Gives us access to the download_url() and wp_handle_sideload() functions
require_once( ABSPATH . \'wp-admin/includes/file.php\' );

// URL to the WordPress logo
$url = \'http://s.w.org/style/images/wp-header-logo.png\';
$timeout_seconds = 5;

// Download file to temp dir
$temp_file = download_url( $url, $timeout_seconds );

if ( !is_wp_error( $temp_file ) ) {

    // Array based on $_FILE as seen in PHP file uploads
    $file = array(
        \'name\'     => basename($url), // ex: wp-header-logo.png
        \'type\'     => \'image/png\',
        \'tmp_name\' => $temp_file,
        \'error\'    => 0,
        \'size\'     => filesize($temp_file),
    );

    $overrides = array(
        // Tells WordPress to not look for the POST form
        // fields that would normally be present as
        // we downloaded the file from a remote server, so there
        // will be no form fields
        // Default is true
        \'test_form\' => false,

        // Setting this to false lets WordPress allow empty files, not recommended
        // Default is true
        \'test_size\' => true,
    );

    // Move the temporary file into the uploads directory
    $results = wp_handle_sideload( $file, $overrides );

    if ( !empty( $results[\'error\'] ) ) {
        // Insert any error handling here
    } else {

        $filename  = $results[\'file\']; // Full path to the file
        $local_url = $results[\'url\'];  // URL to the file in the uploads dir
        $type      = $results[\'type\']; // MIME type of the file

        // Perform any actions here based in the above results
    }

}

SO网友:user3096626

将远程图像导入WordPress至少有三种方法:

  1. Grab and Save Plugin, 另一个答案中提到了这一点。此插件有点旧,它直接保存文件,因此不会创建不同大小的缩略图。上一次更新是在2年前撰写本文时。

  2. Import External Image Plugin 具有远程链接图像的大容量导入。您可能需要增加PHP内存限制才能正常工作。上一次更新是在2年前撰写本文时。

  3. Save & Import Image from URL Plugin 使用本机函数导入图像,以便在媒体库中正确创建图像,并生成所有缩略图等。该插件最近一次更新是在2016年,可与WordPress 4.7配合使用

    披露:我创建了Save & Import Image from URL Plugin

结束

相关推荐

Attachments without images

我正在使用Attachments 插件,但我相信这个问题适用于常规媒体库。我想做的是有一个“附件”(元数据、标题、标题),但没有与之关联的图像。原因是,我想将附件视为“项目项”,可以是图像或文本块。这可能吗?