如何通过Wordpress插件中的文件输入上传文件

时间:2020-01-16 21:29:25

标签: php wordpress forms file-upload

我正在开发一个wordpress插件,它将生成带有一些选项的表单供用户上传文件。这是我的表单代码:

<form class="upload-resller-certs" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" method="post">
  <div class="uploads-container">
    <label for="w-9-upload">
      W-9 Form<br>
      <input type="file" name="w-9" value="w-9" id="w-9-upload">
    </label>
    <label for="resale-cert-upload">
      Reseller Certification Form<br>
      <input type="file" name="resale-cert" value="resale-cert" id="resale-cert-upload">
    </label>
  </div>
  <input type="hidden" name="action" value="upload_resale_certs">
  <input type="submit" name="upload" value="upload">
</form>

然后我处理表单的操作如下

public function update_wholesale_certs()
{
  echo "<pre>";
  print_r($_POST);
  echo "</pre>";

  echo "<pre>";
  print_r($_FILES);
  echo "</pre>";
}

这是那些print_r所显示的

//$_POST dump
Array
(
    [w-9] => file1.pdf
    [resale-cert] => file2.jpg
    [action] => upload_resale_certs
    [upload] => upload
)

//$_FILES dump
Array
(
)

我的问题是为什么我的$ _FILES数组为空?

谢谢

1 个答案:

答案 0 :(得分:1)

Welp在发布此消息后大约5分钟就发现了问题。我的解决方案是将enctype="multipart/form-data"添加到表单中,如下所示:

<form enctype="multipart/form-data" class="upload-resller-certs" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="post">
      <h3>Please Upload Your Certifications<br> <small>Recieve 20% off your next order once completed</small> </h3>
      <div class="uploads-container">
        <label for="w-9-upload">
          W-9 Form<br>
          <input type="file" name="w-9" value="w-9" id="w-9-upload">
        </label>
        <label for="resale-cert-upload">
          Reseller Certification Form<br>
          <input type="file" name="resale-cert" value="resale-cert" id="resale-cert-upload">
        </label>
      </div>
      <input type="hidden" name="action" value="upload_resale_certs">
      <input type="submit" name="upload" value="upload">
    </form>

希望可以帮助遇到相同问题的任何人。

相关问题