我不断收到未定义的索引通知 [重复]

I keep getting an undefined index notice [duplicate]

提问人:user1324106 提问时间:4/11/2012 最后编辑:user1324106 更新时间:4/11/2012 访问量:657

问:

我有一个包含文件输入的表单:

 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 脚本中,它指出我有一个未定义的索引,无论它在 php 脚本中声明“fileImage”的地方。但是我不知道为什么当我以“fileImage”的形式在name属性中提到时,它说我有未定义的索引。为什么说我在 php 脚本中有一个未定义的“fileImage”索引?

这是一个应用程序的链接,您可以在其中附加包含文件输入的行,您可以对此进行测试,如果您愿意,可以自己查看,但目前它一直说上传过程中出现错误。应用

php javascript html 未定义索引

评论

1赞 h00ligan 4/11/2012
尝试print_r($_FILES)看看数组的真实外观。
0赞 user1324106 4/11/2012
@h00ligan我会这样做并回复你
0赞 user1324106 4/11/2012
当我进行print_r($ _FILES)时,它带有一个空白数组,这很奇怪,即使我上传了文件。输出:Array ( )
0赞 kitti 4/11/2012
顺便说一句,你的 iframe 风格因为在“id”上找到并用“class”替换而搞砸了...... ;)
0赞 user1324106 4/11/2012
@RyanP 您在 iframe 代码中说将类更改为 id?

答:

1赞 hakre 4/11/2012 #1

造成此错误的根本原因可能有很多,但实际原因是数组没有字符串索引。$_FILES'fileImage'

为了更好地查看哪些索引可用,您可以执行以下操作:

var_dump(array_keys($_FILES));

另见array_keysvar_dump

可能以下(在这个问题中,未记录的 javascript 代码)正在破坏您的表单或其数据中的某些内容:

onsubmit='startImageUpload(this);'

评论

0赞 user1324106 4/11/2012
因为我要为每个表格行上传一个文件,所以我正在使用(这个),如果它破坏了某些东西,那么我有什么可能解决这个问题?就像我说的,我确实需要 onsubmit 行中的 (this)?您希望我包含执行此提交的 javascript 函数吗?
0赞 hakre 4/11/2012
this可以完全没事。我只是假设,因为从你的问题中不清楚,这可能完全相去甚远。正如您在问题下所评论的那样,我建议您现在开始分析浏览器和服务器之间的网络流量,因为不清楚您的“上传”请求会发生什么(显然它不再是上传请求,因此您需要提供更多信息,以便了解更多信息)。
0赞 user1324106 4/11/2012
这是一个应用程序的链接,您可以在其中附加包含文件输入的行,您可以对此进行测试,如果您愿意,可以自己查看,但目前它一直说上传过程中出现错误。应用
0赞 hakre 4/11/2012
@user1324106:如果你想让我以这种方式测试它,你需要和我签约。
0赞 user1324106 4/11/2012
你知道我可以用来测试我的应用程序以查看它是否可以成功上传的任何服务器吗?因为我在我的服务器上不断上传失败,并且读写权限都已设置。
0赞 Sthe 4/11/2012 #2

我以前遇到过同样的问题,那是因为我的ajax / javascript代码。作为测试,请尝试发送不带 javascript 的表单。这样,您将知道问题的确切位置。如果错误消失,则问题可能出在javascript上。

我从来没有真正找到使用 ajax 上传文件的正确解决方案。我通过将表单发送到 iframe 中,然后在完成加载后收集反馈来解决这个问题。

我会在表单标签上做这样的事情:. 用 和 创建一个框架 这是模糊的,但我希望它确实能给你一个想法。<form action="..." target="myframe">name="myframe"onload="getResults()"

使用时要小心,因为它会触发两次,即第一次完成页面加载时,以及完成表单提交时。onload

我希望我没有完全误解你的观点。