【问题标题】:$_FILES only includes the last input$_FILES 仅包含最后一个输入
【发布时间】:2013-04-25 22:19:24
【问题描述】:

我整天都在为此苦苦挣扎,并且厌倦了被卡住。今天早上花了半个小时在我现在卡住的同一个应用程序上为个人资料图片做一个不错的小自定义上传器。

这里的问题不是上传(我已经解决了),而是将其扩展为允许多次上传的表单。它不是一个多文件、单输入的上传器,而是有多个输入。

我目前在表单中只有两个 input type='file' 实例。我正在使用 Codeigniter,但问题不在于 CI 无法处理多个上传(我不认为)。我现在要做的只是做print_r($_FILES);,它只显示两个输入中的第二个

如果我在表单中交换它们的位置,它仍然只显示最后一个而不是两者。

我今天已经检查了他们的名字等大约 100 倍。真的不确定发生了什么。而且,需要明确的是,我一直在搜索 SO 和谷歌,看看我是否能找到问题所在。到目前为止,我什么都没想到。

感谢您的任何指导或帮助。

编辑:----------------------------

<form action="http://curvo:8888/index.php/offers/create" method="post" accept-charset="utf-8" class="bigolform" id="offer-form" enctype="multipart/form-data">                  
                    ...
                    <input type="file" name="ProductOfferPhoto" value="" id="ProductOfferPhoto">                    

                    ...

                    <input type="file" name="QuoteDoc" value="" id="QuoteDoc">                      

                    <!--using an ajax uploading script-->
                    <script type="text/javascript" src="/assets/js/libs/ajaxfileupload.js"></script>


                    <a href="#" class="orange btn add submit-the-offer">Complete offer</a>

</form>

我也尝试过使用genericName[],但这只会得到一个空数组。

【问题讨论】:

  • 请发布 HTML 代码
  • print_r($_FILES)的输出也有帮助
  • 输入字段的name 是什么?听起来你需要它是一个像 name=yourFieldName[] 这样的数组
  • 您能否在单步调试器中启动请求并在 CI 启动之前暂停?那么哪些值在$_FILES 中。可能是 CI 在某个地方与超全局变量发生争执。 IIRC 它至少与 POST 和 GET 一样,可能与 $_FILES 一样?您可以使用调试器轻松找到。

标签: php html forms codeigniter file-upload


【解决方案1】:

如果您接受多个文件,请确保您的输入 name 是一个数组:

单个上传:
&lt;input name="productImage" accept="image/*" type="file" /&gt;

多次上传:
&lt;input name="productImage[]" accept="image/*" type="file" /&gt;
&lt;input name="productImage[]" accept="image/*" type="file" /&gt;
... --------------------------------------^ [] 表示这是一个数组并允许您可以为同一个名称提交多个值。

然后您会发现$_FILES 的多个值,而不是仅上传的最后一个文件(因为每个文件基本上都覆盖了当前的最后一个文件)

【讨论】:

    【解决方案2】:

    感谢大家的想法和意见。我不知道有关解决方案的答案,但我找到了有关该问题的“为什么”的答案。

    我从 Nettuts 获取的 ajaxfileuploader.js 脚本正在扔东西。当我进行单次上传时,它工作了一段时间,但当我开始尝试进行多次上传时,它就崩溃了,只抓住了最后一个 input 字段。

    将在不久的将来某个时候探索 blueimp 的 jQuery File Upload 插件。现在只是为了赶上星期一的最后期限而跳过它。

    再次感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多