$ _FILES仅包含最后一个输入

时间:2013-05-01 20:49:57

标签: php html forms codeigniter file-upload

我整天都在和这个人搏斗,并且厌倦了被困。今天早上花了半个小时在我现在停留的同一个应用程序上为个人资料图片做一个漂亮的小型自定义上传器。

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

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

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

我今天已经检查了他们的名字等,大约100倍。真的不确定发生了什么。而且,很明显,我一直在寻找SO和Google的地狱,看看我是否能找到问题所在。到目前为止,我什么都没有。

感谢您提供任何指导或帮助。

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

<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[],但这只会让我得到一个空数组。

2 个答案:

答案 0 :(得分:5)

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

单上传:
<input name="productImage" accept="image/*" type="file" />

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

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

答案 1 :(得分:0)

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

我抓住Nettuts的ajaxfileuploader.js脚本正在扔东西。当我进行单次上传时,它工作正常一段时间,但是当我开始尝试多次上传时,它会逐渐消失,只抓住最后一个input字段。

将在不久的将来某个时候探索blueimp的jQuery文件上传插件。现在只是为了满足我周一的截止日期而跳出ajax'ing它。

再次感谢您的帮助。