我目前正在使用此代码进行 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)