Add a file upload field

时间:2013-09-16 作者:Navin Nagpal

我正在构建一个插件,它的设置页面中有一个文件上传字段。文件不应为图像文件,而应为。文件。txt等。正在与它的代码斗争。任何帮助都将不胜感激!

编辑1:以下是代码-

$options = get_option(\'nn_sub_general_options\');
if(!isset($options[\'nn_file_uploader\'])) $options[\'nn_file_uploader\'] = \'\';
require_once( ABSPATH . \'wp-admin/includes/file.php\' );
echo "<form method=\'post\' action=\'options.php\' enctype=\'multipart/form-data\'>
<input type=\'file\' name=\'nn_sub_general_options[nn_file_uploader]\' id=\'nn_sub_general_options[nn_file_uploader]\' /></form>";
$uploadedfile = $_FILES[\'nn_sub_general_options[nn_file_uploader]\'];
$upload_overrides = array( \'test_form\' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
代码的最后第三行似乎有一些问题,因为它给了我一个未定义的索引错误

2 个回复
SO网友:Bordoni

首先执行avar_dump$_FILES 变量来检查您使用的数组键是否正确,您永远不应该只获取来自用户输入的变量并使用它,请尝试执行issetempty 在使用变量之前。

找到要使用的密钥后wp_check_filetype 因为它将提供有关文件的更安全的数据,所以您必须执行2in_array 检查文件的mimetype和扩展名是否都属于您允许用户上载的集,如果不是,则向用户抛出消息。示例in_array:

$extention = \'doc\';
$allowed_extensions = array( \'doc\', \'docx\', \'pdf\' );

$mime = \'text/javascript\';
$allowed_mime = array( \'application/msword\', \'application/vnd.openxmlformats-officedocument.wordprocessingml.document\', \'application/vnd.ms-word.document.macroEnabled.12\' );

if ( ! in_array( $extension, $allowed_extensions ) ){
    return false;
}

if ( ! in_array( $mime, $allowed_mime ) ){
    return false;
}
如果要检查文件大小,可以使用check_upload_size, 这也是一种WordPress方法,它使用站点上载限制作为指导。

SO网友:Vikas Gautam

$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if (
    (
        ( $_FILES["file"]["type"] == "image/gif") || 
        ($_FILES["file"]["type"] == "image/jpeg") || 
        ($_FILES["file"]["type"] == "image/jpg") || 
        ($_FILES["file"]["type"] == "image/pjpeg") || 
        ($_FILES["file"]["type"] == "image/x-png") || 
        ($_FILES["file"]["type"] == "image/png")
    ) 
    && ($_FILES["file"]["size"] < 20000) 
    && in_array($extension, $allowedExts)

) {  

}
您可以将此条件用于文件类型

结束

相关推荐

Option_active_plugins筛选器不起作用

我为option\\u active\\u插件添加了一个过滤器,以防止大多数插件加载到管理页面上。确认位于正确的页面上,并返回经过适当修改的数组,但这对页面上包含的插件没有影响。尝试使用高数字作为筛选器优先级。无影响。有什么想法吗?