PHP文件上传 谷歌浏览器问题

今天想写一个动态增加type=file控件,然后上传文件的功能,但是IE浏览器一切正常,但是谷歌浏览器只能获取到一个文件信息!代码如下
<form action="upload.class.php" runat="server" method="post" enctype="multipart/form-data">
<span><input type="file" name="file[]" id="aa" /></span>
<span class="add_pic" onclick="addinput(this);">[增加图片]</span>
<input type="submit" value="test" />

JS代码
function addinput(obj)//增加input节点
{
var input=document.createElement('input');
var br=document.createElement('br');
input.id='aa';
input.type='file';
input.name='file[]';
obj.parentNode.appendChild(br);
obj.parentNode.appendChild(input);
}
别看JS代码,JS代码是无措的,正常执行,为了方便 表格HTML代码删除了一部分

PHP

<?php
$file = $_FILES['file'];

echo "<pre>";
print_r($file);
echo "</pre>";
谷歌浏览器

Array
(
[name] => Array
(
[0] => 新建文本文档.txt
)

[type] => Array
(
[0] => text/plain
)

[tmp_name] => Array
(
[0] => C:\wamp\tmp\php544A.tmp
)

[error] => Array
(
[0] => 0
)

[size] => Array
(
[0] => 311
)

)

只获取到了一个一个文件的数据,动态增加的控件选中的图片获取不到,求教,如何解决这个问题?而IE浏览器则两个上传的文件数据都获取到了,谷歌却动态增加的图片上传控件的文件获取不到!望高手赐教!

form表单POST提交和ID没关系,主要看name;
具体的原理我也不知道为什么谷歌不支持数组形式的name
那么既然谷歌不支持,你就把name给换一下吧!
你可以给js设置一个全局变量,如果点击增加了,就让变量加1,然后赋值给file的name
这样name就不会重复了,你PHP页面只需要循环$_FILES就可以了!追问

1 你测试的谷歌也是接受不到$FILE的数组吗?
2 我按你的方法,给动态生成的file控件动态增加name,发现还是接收不到,发现问题还是谷歌接收不到动态生成的file控件

你好,问题解决了!现在贴出来解决方法:
是form和table的嵌套问题,把form写到table外面就行!

追答

额……你把form写到table里面了……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-17
谁说JS 没有错了
你的input id是相同的 会导致js 出错的追问

id 不一样 也会出现这种问题~~~ 你说的这个不是问题的实质,问题是 谷歌浏览器接受不到动态创建的input type=file的值,而IE则没有问题,正常接收

追答

runat="server"
为啥要用呢..

你用firebug 调试下 看看有没有post值过去

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网