var MIME = "jpg gif png bmp jpeg";
var str = "";
var uploadname ="";
var i=0;
var tags = "",inputname;function imagesize()
{
inputname = "usename" + i;
uploadname = document.getElementById(inputname).value;
var s_split = uploadname.split(".");
var filename = uploadname.split(/\/|\\/g);
s_split[1]=s_split[1].toLowerCase();
if(s_split[1] == MIME.match(s_split[1]))
{
document.getElementById(inputname).style.display="none"; //隐藏上一个INPUT FILE
i=i+1;
    inputname = "usename" + i;
tags = "<input name=\"usename[]\" id=\""+inputname+"\" type=\"file\" size=\"40\" onchange=\"imagesize()\"  />";  //创建新的INPUT FILE
alert(tags);
     document.getElementById("upload").innerHTML+=tags;
str += "<table width=\"100%\" border=\"0\" style=\"border-bottom:1px solid #999;\" ><tr>";
str += "<td style=\"text-align:center; border-right:1px solid #999; font-size:12px;\" width=\"60%\">"+filename.pop()+"</td>";
str += "<td style=\"text-align:center; border-right:1px solid #999; font-size:12px;\" width=\"20%\"><img src=\"icos/check_error.gif\" /></td>";
        str += "<td style=\"text-align:center; font-size:12px;\" width=\"20%\"></td></tr></table>"; // 这段字符串是显示已经选取的文件
document.getElementById("uploadfile").innerHTML=str;

}
else
{alert("不支持的格式,请检查文件名格式是否正确");}

}function uploadfiles()                
{
  document.getElementById('upload').submit(); //表单提交函数

}--------------------------------上面这段是JS --------------------
<?php
include"../../server.php";
$path=$mz_path.'\attach';
$uppath=$mz_path.'\attach/';
for($i=0;$i<count($_FILES['usename']['name']);$i++)
{
$upload_file=$_FILES['usename']['tmp_name'][$i];
$upload_file_name=$_FILES['usename']['name'][$i];
$upload_file_type=$_FILES['usename']['type'][$i];
if(is_dir($path) || mkdir($path,0777))
{
move_uploaded_file($upload_file,$uppath.$upload_file_name);

}
}
?>
---------------------------这段是UPLOAD.PHP ----------------上传处理
<a id="e_image" href="javascript:;" title="添加图片" onclick="display('h_image')"><img  border="0" src="icos/image.gif" /></a>
<div id="h_image" style="display:none">
<div id="uploadimage">上传图片:图片大小请压缩到1M以下,否则不能上传</div>
<div id="attach_add">
<form enctype="multipart/form-data" name="upload" id="upload" method="post" target="attachframe" action="upload.php"><input name="usename[]" id="usename0" type="file" size="40" onchange="imagesize()"  /></form>
</div>
<div id="uploadimage_1"></div>
<table width="100%" border="0" style="border-bottom:1px solid #999;" >
  <tr> <td style="text-align:center; border-right:1px solid #999; font-size:12px;" width="60%">文件名</td>
    <td style="text-align:center; border-right:1px solid #999; font-size:12px;" width="20%">状态</td>
    <td style="text-align:center; font-size:12px;" width="20%">插入</td>
</tr>
</table>
<div id="uploadfile"></div>
<input name="" type="button" value="上传图片" onclick="uploadfiles()" style="border:1px solid #999; margin:1px;" />
<span style="font-size:12px">允许上传格式为 jpg gif png bmp jpeg的格式图片</span>
</div>---------------上面这段是HTML-------------------- 这是一个设置了position absolutely属性的DIV
通过JS显示隐藏
现在问题是我选取上面文件后,点击上传按钮后会有页面跳转进度条,但是文件没上传。不过经过调试,我想问题应该是在JS上面,就是不知道JS哪里有问题

解决方案 »

  1.   

    document.getElementById(inputname).style.display="none";
    i=i+1;
        inputname = "usename" + i;
    tags = "<input name=\"usename[]\" id=\""+inputname+"\" type=\"file\" size=\"40\" onchange=\"imagesize()\"  />";
    alert(tags);
         document.getElementById("upload").innerHTML+=tags;我把上面这段代码删除掉,就可以上传成功,不知道创建多个FILE 的时候有什么问题???
      

  2.   

    这应该是你的那段js的效果 js处理上没什么问题啊 
    看下后台拿的值对么 另外 你的浏览器是啥?
    <form id="upload" action="upload.php" target="attachframe" method="post" name="upload" enctype="multipart/form-data">
    <input id="usename0" type="file" onchange="imagesize()" size="40" name="usename[]" style="display: none;"/>
    <input id="usename1" type="file" onchange="imagesize()" size="40" name="usename[]" style="display: none;"/>
    <input id="usename2" type="file" onchange="imagesize()" size="40" name="usename[]"/>
    </form>
      

  3.   

    我浏览器IE8 和 firefox5.0  
      

  4.   

    服务器应该也没问题啊<form enctype="multipart/form-data" name="upload" id="upload0" method="post" target="attachframe"action="admin/bbcode/upload.php"><input name="usename[]" id="usename0" type="file" size="40" onchange="xxx('usename0')"  />
    <input name="usename[]" id="usename1" type="file" size="40"  onchange="xxx('usename1')" />
    <input name="usename[]" id="usename2" type="file" size="40" onchange="xxx('usename2')"  />
    <input name="usename[]" id="usename3" type="file" size="40" onchange="xxx('usename3')"  />
    <input name="usename[]" id="usename4" type="file" size="40" onchange="xxx('usename4')"  />
    <input name="" type="submit" value="上传图片" style="border:1px solid #999; margin:1px;" />
    </form>
    <iframe name="attachframe" id="attachframe" style="display: none;" ></iframe>
    <script type="text/javascript">
    function xxx(aaa)
    {
    document.getElementById(aaa).style.display="none";
    }
    </script>我把代码改成这样的,也可以全部上传上去啊,这是我单独做的一个页面,调用UPLOAD.PHP现在就是不知道哪有问题了
      

  5.   

    你先不要动态的添加,页面上静态设置多个file,提交看看后台能不能保存
    单步调试一下后台程序应该能找到问题的。
      

  6.   

    在php后台把没个内容打出来看看 得到的东西都对不对 前台没问题
      

  7.   


    <?php
    include"../../server.php";
    $path=$mz_path.'\attach';
    $uppath=$mz_path.'\attach/';
    for($i=0;$i<count($_FILES['usename']['name']);$i++)
    {
    echo $_FILES['usename']['name'][$i]; //测试是否取到文件名
    $upload_file=$_FILES['usename']['tmp_name'][$i];
    $upload_file_name=$_FILES['usename']['name'][$i];
    $upload_file_type=$_FILES['usename']['type'][$i];
    if(is_dir($path) || mkdir($path,0777))
    {
    move_uploaded_file($upload_file,$uppath.$upload_file_name);
    echo ("<script>window.parent.uploadsuccess();</script>");

    }
    }
    ?>这个PHP 有什么问题吗??我把下面这段自动创建的删除掉后,就留我最原始的FILE 就可以显示出上传的文件名加上这段就什么都不显示了 
    document.getElementById(inputname).style.display="none";
    i=i+1;
        inputname = "usename" + i;
    tags = "<input name=\"usename[]\" id=\""+inputname+"\" type=\"file\" size=\"40\" onchange=\"imagesize()\"  />";
    alert(tags);
         document.getElementById("upload").innerHTML+=tags;
      

  8.   

    为什么你的这个标签的name非要加个[]呢 尽量不要用这种特殊字符做name
    "<input name=\"usename[]\" 
      

  9.   


    inputname = "usename" + i;
    tags = "<input name=\"usename[]\" id=\""+inputname+"\" type=\"file\" size=\"40\" onchange=\"imagesize()\" />"; //创建新的INPUT FILE
    alert(tags);
      document.getElementById("upload").innerHTML+=tags;
    问题出在这里,不能设置容器的innerHTML,这样会清空已经选择的file控件的值。要使用DOM操作,appendChildi=i+1;
    inputname = "usename" + i;
    var input=document.createElement('input');
    input.type="file";
    input.name="usename[]";
    input.id=inputname
    input.size=40;
    input.onchange=imagesize;
    document.getElementById("upload").appendChild(input)///////////*tags = "<input name=\"usename[]\" id=\""+inputname+"\" type=\"file\" size=\"40\" onchange=\"imagesize()\" />"; //创建新的INPUT FILE
    alert(tags);
      document.getElementById("upload").innerHTML+=tags;*/
      

  10.   

    真的是太感谢 showbo  ,不过我之前也用过这个createElement 方式,但是没成功,后来才转用innerHTML的方式的,没想到 innerHTML 有这个问题,不过问题总算是解决了