上传并附加多个图像文件到帖子

时间:2015-12-23 作者:Iurie

在前端表单中,我有一个“多个”输入字段,用于上传图像并将其附加到帖子和处理脚本(来自here). 我希望这将上载并附加我选择的所有文件,但这不会发生。仅上载并附加最后选定的文件(按字母顺序)。当我检查$\\u FILES数组时var_dump($_FILES) 我在那里只看到一个文件。How can I upload and attach to a post multiple files at once?

<?php ob_start(); ?>

<form id="frontpost" method="post" enctype="multipart/form-data">
    ...
    <input type="file" multiple name="thumbnail" id="thumbnail">
    ...
</form>

<?php return ob_get_clean(); }
和处理脚本:

if (!function_exists(\'wp_generate_attachment_metadata\')) {
    require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
    require_once(ABSPATH . "wp-admin" . \'/includes/file.php\');
    require_once(ABSPATH . "wp-admin" . \'/includes/media.php\');
}

if ($_FILES) {
    foreach ($_FILES as $file => $array) {
        if ($_FILES[$file][\'error\'] !== UPLOAD_ERR_OK) {
            return "upload error : " . $_FILES[$file][\'error\'];
        }
        media_handle_upload( $file, $post_id );
    }   
}

1 个回复
SO网友:Will

您需要将括号添加到name PHP的多输入表单元素,以将其解释为数组。

<input type="file" multiple name="thumbnail[]" id="thumbnail">  
然后,您将得到一个名为“缩略图”的数组,其中包含5个数组。看见this comment on php.net 结构的分解。

Edit: 请注意,单个文件输入与多个文件输入返回的内容有所不同。下面是一个有两个表单字段的示例,一个是单个文件上载,另一个是多个表单字段。

<pre>
<?php if ($_FILES) {
    print_r($_FILES);
}
?>
</pre>

<form id="frontpost" method="post" enctype="multipart/form-data">
    <input type="file" name="single">
    <input type="file" multiple name="multiple[]">
    <button type="submit">Submit</button>
</form>
其中打印:

[single] => Array
    (
        [name] => foo.txt
        [type] => text/html
        [tmp_name] => /path/to/tmp/php/qwqerqrq
        [error] => 0
        [size] => 1621
    )

[multiple] => Array
    (
        [name] => Array
            (
                [0] => bar.txt
                [1] => baz.txt
            )

        [type] => Array
            (
                [0] => text/plain
                [1] => text/plain
            )

        [tmp_name] => Array
            (
                [0] => /path/to/tmp/php/vwvwrvwrv
                [1] => /path/to/tmp/php/wqerverhw
            )

        [error] => Array
            (
                [0] => 0
                [1] => 0
            )

        [size] => Array
            (
                [0] => 36976
                [1] => 58355
            )

    )
如果您的代码在安装时希望$_FILES, 您需要对其进行更新,以使用非常不同的多文件上载结构。

相关推荐

ADD_THEME_SUPPORT(‘CUSTOM-HEADER-UPLOADS’);功能有什么作用?

同时向functions.php 文件中,我发现了以下内容:add_theme_support(\'custom-header-uploads\');这到底是做什么的?我删除了条目functions.php 但对网站没有什么不同。我最初认为这与上传标题图像的能力有关,但这取决于add_theme_support(\'custom-header\');在执行搜索时,我无法在Codex中看到任何有意义的信息。这是某种贬值的特征还是我忽略了什么?