【问题标题】:I keep getting an undefined index notice [duplicate]我不断收到未定义的索引通知[重复]
【发布时间】:2012-04-23 17:48:09
【问题描述】:

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

 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”形式的名称属性中提到时,它说我有未定义的索引。为什么它说我在 php 脚本中有一个未定义的“fileImage”索引?

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

【问题讨论】:

  • 试试 print_r($_FILES) 看看这个数组到底长什么样。
  • @h00ligan 我会这样做并回复你
  • 当我执行 print_r($_FILES) 时,它带有一个奇怪的空白数组,即使我已经上传了一个文件。输出:Array ( )
  • 顺便说一句,您的 iframe 样式因在 'id' 上查找并替换为 'class' 而搞砸了... ;)
  • @RyanP 你在 iframe 代码中说将类更改为 id?

标签: php javascript html undefined-index


【解决方案1】:

这个错误的根本原因可能有很多,但真正的原因是$_FILES 数组没有字符串索引'fileImage'

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

var_dump(array_keys($_FILES));

另见array_keysvar_dump

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

onsubmit='startImageUpload(this);'

【讨论】:

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

我之前也遇到过同样的问题,这是因为我的 ajax/javascript 代码。作为测试,请尝试在不使用 javascript 的情况下发送您的表单。这样,您将知道问题的确切位置。如果错误消失,您的问题可能与 javascript 有关。

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

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

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

希望我没有完全误解你的意思。

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 2011-12-04
    • 2016-01-11
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多