我正在使用所见即所得(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
答案 0 :(得分:2)
尝试在enctype="multipart/form-data"
标签中添加<form>
使用$_FILE
时需要遵循的一些规则:
- 检查php.ini文件上的
file_uploads = On
- 确保表单使用method =“ post”
- 该表单还需要以下属性:
enctype="multipart/form-data"
(它指定要使用的内容类型 提交表单时使用)
没有上述要求,文件上传将无法进行。