管理页面:具有enctype=“Multipart/Form-Data”的表单不传输其数据

时间:2017-09-12 作者:Robert

我在google上搜索了几个小时,但找不到任何解决我问题的方法:

我正在构建一个插件,并希望在其管理页面中嵌入一个文件输入。因此,我给form元素赋予属性enctype="multipart/form-data" 我正试图通过$_FILES, 但它是空的!与相同$_POST.

没有enctype="multipart/form-data" 至少文件名和其他表单字段出现在$_POST.

我想知道WordPress是否正在取消对这些超全局文件的直接访问,或者以其他方式阻止这种常规的文件上传方式。

我读了很多关于钩子和将所有表单发布到admin\\u post的文章。php或admin\\u ajax。php但由于我的上载功能位于一个类中,该类是具有自动加载等功能的大型库的一部分,因此我不选择它。我的表单正在将其数据发送到当前的管理页面(我在没有action-属性,但也指定它action="admin.php?page=XYZ" 但没有任何效果)。

我会感谢你的每一个提示!

1 个回复
SO网友:Yashpal Modi S

如果要在自定义文件夹中上载,可以使用以下功能。在函数中添加函数。php

function upload_user_file( $file = array(),$path ) {
    if(!empty($file)) 
    {


        $upload_dir=$path;
        $uploaded=move_uploaded_file($file[\'tmp_name\'], $upload_dir.$file[\'name\']);
        if($uploaded) 
        {
            echo "uploaded successfully ";

        }else
        {
            echo "some error in upload " ;print_r($file[\'error\']);  
        }
    }

}
在模板文件中创建如下表单:

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="upload">
</form>
像以前一样在模板文件中调用upload函数get_header() 功能:

if(isset($_POST[\'upload\']))
    {

       if( ! empty( $_FILES ) ) 
       {
          $file=$_FILES[\'file\'];   // file array
          $upload_dir=wp_upload_dir();
          $path=$upload_dir[\'basedir\'].\'/myuploads/\';  //upload dir.
          if(!is_dir($path)) { mkdir($path); }
          $attachment_id = upload_user_file( $file ,$path);

       }
    }

结束

相关推荐

GravityForms是否将每个用户或IP的提交时间限制为30分钟?

我遵循GravityWiz的DIY代码,但作者没有提到如何让代码在30分钟、1小时、2小时等时间内工作。。。?他只解释了如何在24小时内工作-http://gravitywiz.com/better-limit-submission-per-time-period-by-user-or-ip/当查看此处的代码时-https://gist.githubusercontent.com/spivurno/4024361/raw/gw-gravity-forms-submission-limit.php这是否意味