Wordpress自定义文件上传页面

标签 wordpress

我目前正在使用此代码上传 PHP 文件(直接在 wordpress 页面上找到):

<form enctype="multipart/form-data" action="upload.php" method="POST">
Please choose a file: <input name="uploaded" type="file" /><br />
<input type="submit" value="Upload" />
</form> 

上传.php
    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if ((($_FILES["file"]["type"] == "image/gif")
         || ($_FILES["file"]["type"] == "image/jpeg")
         || ($_FILES["file"]["type"] == "image/png")
         || ($_FILES["file"]["type"] == "image/pjpeg"))
        && ($_FILES["file"]["size"] < 20000)
        && in_array($extension, $allowedExts))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
            echo "Upload: " . $_FILES["file"]["name"] . "<br>";
            echo "Type: " . $_FILES["file"]["type"] . "<br>";
            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
            echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

            if (file_exists("upload/" . $_FILES["file"]["name"]))
            {
                echo $_FILES["file"]["name"] . " already exists. ";
            }
            else
            {
                move_uploaded_file($_FILES["file"]["tmp_name"],
                                   "upload/" . $_FILES["file"]["name"]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
            }
        }
    }
    else
    {
        echo "Invalid file";
    }

即使我知道 100% 它应该工作,它也总是返回“无效文件”。

我一直在网上环顾四周,我认为 WP 不能做 enctype="multipart/form-data"所以这就是它不起作用的原因。

有没有人有解决方法或任何想法为什么这行不通?

最佳答案

我知道这篇文章有点旧,但希望能帮助其他人。

我正在做一些非常相似的事情(自定义上传显示在自定义页面上)并且还使用了与 objectiveccoder001 几乎完全相同的代码.我一直收到“无效文件”。和写权限错误。我最终选择了这个:

if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile ) {
    echo "File is valid, and was successfully uploaded.\n";
    //var_dump( $movefile);
} else {
    echo "Possible file upload attack!\n";
}

如果您不打算使用 Wordpress 的媒体上传器,而只需要简单的文件上传,则效果很好。它仍然使用像内置上传器这样的过时文件结构上传它。然后你就可以使用 $movefile数组来获取文件的数据。

引用:http://codex.wordpress.org/Function_Reference/wp_handle_upload

关于Wordpress自定义文件上传页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423879/

相关文章:

html - 指定图像宽度全尺寸 WordPress

wordpress - 将自定义按钮颜色添加到 Visual Composer 按钮设置

css - div 的不当行为

php - wordpress 数据库调用成员错误

html - Bootstrap、页眉/横幅、匹配宽度和定位到正文

mysql - 加速大型数据库的 "SQL_CALC_FOUND_ROWS"SQL 查询

php - 如何使用PHP获取当前页面的完整URL

php - 在 WordPress 中显示来自 SQL 数据库的数据

php - 如何将 PHP 插入到 jQuery 中?

wordpress - 这在 WordPress 中可能吗