我有一个包含文件输入的表单:
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='startImageUpload(this);' class='imageuploadform' ><label>" +
"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtn' value='Upload' /></label>" + +
"</p> <iframe class='upload_target' name='upload_target' src='#' style='wclassth:0;height:0;border:0px;solclass #fff;'></iframe></form>");
这链接到上传文件的php脚本:
<?php
$destination_path = str_replace("//", "/", $_SERVER['DOCUMENT_ROOT']."/")."ImageFiles";
$result = 0;
$target_path = $destination_path . basename( $_FILES['fileImage']['name']);
if(move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) {
$result = 1;
}
sleep(1);
?>
<script language="javascript" type="text/javascript">window.top.window.stopImageUpload(<?php echo $result; ?>);</script>
问题是,在php脚本中,它声明我有一个未定义的索引,无论它在哪里声明&#39; fileImage&#39;在PHP脚本中。但我不知道为什么我在表格&#39; fileImage&#39;中的名字属性中提到我有未定义的索引。为什么它说明我有一个未定义的索引&#39; fileImage&#39;在PHP脚本中?
这是一个指向应用程序的链接,您可以在其中追加包含文件输入的行,您可以测试它并自行查看,但是在上传过程中它会一直说错误。 application
答案 0 :(得分:1)
导致此错误的原因可能有很多,但实际原因是$_FILES
数组没有字符串索引'fileImage'
。
为了更好地查看哪些索引可用,您可以执行以下操作:
var_dump(array_keys($_FILES));
另请参阅array_keys
和var_dump
。
可能以下(在此问题中未记录的javascript代码)正在破坏表单中的内容或数据:
onsubmit='startImageUpload(this);'
答案 1 :(得分:0)
之前我遇到过同样的问题,这是因为我的ajax / javascript代码。作为测试,尝试在没有javascript的情况下发送表单。通过这种方式,您将知道问题的确切位置。如果错误消失,您的问题可能是javascript。
我从来没有真正得到使用ajax上传文件的正确解决方案。我通过将表单发送到iframe然后在加载后收集反馈来解决问题。
我会在表单标记上执行以下操作:<form action="..." target="myframe">
。
使用name="myframe"
和onload="getResults()"
创建一个框架
这很模糊,但我希望它能给你一个想法。
使用onload
时要小心,因为它会发射两次。当页面第一次完成加载,以及表单完成提交时。
我希望我在这里没有完全误解你的观点。