PHP-上传图片和$ _files变量

时间:2018-07-16 16:07:35

标签: javascript php file

我正在使用所见即所得(WYSIWYG)编辑器为博客文章创建博客,并为每个博客文章上传图片。

所以我的输入看起来像这样,我在这里包括了一个名为wysiwyg.php的文件,但这对于这个问题并不是必须的。 (它基本上具有用于加粗斜体等的按钮,之所以这样包含,是因为我在网站的其他区域中使用了它)

<form action="blog_create.php" method="POST">
    <input id="title" name="title" type="text" placeholder="Title">
    <input id="post_image" name="post_image" type="file">
    <textarea id="description" name="description" placeholder="Description"></textarea>
    <textarea id="meta" name="meta" placeholder="Meta"></textarea>

    <div id="wysiwyg_controls"><?php include_once("wysiwyg.php"); ?></div>
    <iframe name="richTextField" id="wysiwyg" class="news_article"></iframe>

    <input type="hidden" id="text_content" name="text_content" value="">
    <input type="hidden" id="save_as_type" name="save_as_type" value="">

    <button id="blog_draft_submit" name="blog_draft_submit" onclick="return false">Save as Draft</button>
    <button id="blog_publish_submit" name="blog_publish_submit" onclick="return false">Publish</button>
</form>

然后,我使用Javascript / Jquery提交表单,以便实际获取iframe的内容:

$("#blog_draft_submit").on("click", function(){
    $text_content = richTextField.document.getElementsByTagName('body')[0].innerHTML;
    $("#text_content").attr("value", $text_content);
    $("#save_as_type").attr("value", "draft");
    this.form.submit();
});
$("#blog_publish_submit").on("click", function(){
    $text_content = richTextField.document.getElementsByTagName('body')[0].innerHTML;
    $("#text_content").attr("value", $text_content);
    $("#save_as_type").attr("value", "publish");
    this.form.submit();
});

但是,对于文件输入或访问全局$_FILES变量中的任何内容,这似乎无法正常工作。

如果我做var_dump($_FILES);,我会得到:

array (size=0)
  empty

但是当我做var_dump($_POST);时,我得到了:

array (size=8)
  'title' => string '' (length=0)
  'post_image' => string 'image.png' (length=23)
  'description' => string '' (length=0)
  'meta' => string '' (length=0)
  'wysiwyg_image' => string '' (length=0)
  'text_content' => string '' (length=0)
  'save_as_type' => string 'draft' (length=5)

这是因为我通过JS提交的方式还是我实际上做错了什么?我是否需要创建一个单独的分析文件并执行XMLHttpRequest和类似AJAX的操作?

对此将提供任何帮助或帮助。

/ ----------编辑--------- \

不需要AJAX

1 个答案:

答案 0 :(得分:2)

尝试在enctype="multipart/form-data"标签中添加<form>

使用$_FILE时需要遵循的一些规则:

  
      
  1. 检查php.ini文件上的file_uploads = On
  2.   
  3. 确保表单使用method =“ post”
  4.   
  5. 该表单还需要以下属性:enctype="multipart/form-data"它指定要使用的内容类型   提交表单时使用
  6.   

没有上述要求,文件上传将无法进行。