之前先用 $file_name[$i] = str_replace("\\","",$_FILES['file']['name'][$i]);
         $file_name[$i] = str_replace("'","",$file_name[$i]);
         move_uploaded_file($_FILES['file']['tmp_name'][$i],"/tmp/$file_name[$i]")
把临时文件先移到服务器目录下,能收到所有上传的文件,再发送
        
for($i=0;$i <=9;$i++){
    if(!empty($_FILES['file']['name'][$i])){
            $mail->AddAttachment("/tmp/$file_name[$i]");
    }
}
也是一样,只能收到第一个附件。 

解决方案 »

  1.   

    for($i=0;$i <=9;$i++){ 
        if(!empty($_FILES['file']['name'][$i])){ 
               echo "<pre>";
               print_r($_FILES['file']['name'][$i]);
               echo "</pre>";
        } 

    把结果帖出来看看先.
      

  2.   

    谢谢zmouki,前面还有判断文件大小和文件类型的程序段,每一个都没问题的。把你的程序加上了,处理页面也显示了我所有上传的文件(文件名也没错)和提交成功的页面。可是还是只收到第一个
      

  3.   

    你这样再测一下,把你的这一段
    for($i=0;$i <=9;$i++){ 
            if(!empty($_FILES['file']['name'][$i])){ 
    $mail->AddAttachment($_FILES['file']['tmp_name'][$i],$_FILES['file']['name'][$i]);
        } 

    再变一下.变成如下
    $mail->AddAttachment($_FILES['file']['tmp_name'][0],$_FILES['file']['name'][0]);
    中间的数字0再换成3,5或其他的试试看,看看每一封单独发送有没有问题.
      

  4.   

    for($i=0;$i <=9;$i++){ 
            if(!empty($_FILES['file']['name'][$i])){ 
    $mail->AddAttachment($_FILES['file']['tmp_name'][$i],$_FILES['file']['name'][$i]);
    echo $_FILES['file']['name'][$i]."ok"."<br>";
        } 

    看看是哪个邮件有问题.再测测看.
      

  5.   

    试了上传总共10个,处理页面显示所有都ok,提交的邮箱也试过几个,smtp用了smtp.sina.com测试,也用过localhost测试,反正第一个上传附件肯定可以收到的。下面的是表单中添加文件的一段:    <tr>
         <td width="140" height="21"><font size="1" color="#FF0000">Note: The DPI of the photo should be great than 300*300 dpi</font></td>
         <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
        <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
         <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
         <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
    <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
        <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
        <tr>
          <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
         <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
        </tr>
         <tr>
         <td width="140" height="21">&nbsp;</td>
          <td width="418"><input name="file[]" type="file" size="40"></td>
         </tr>
      

  6.   

    你把print_r($FILES)打印出来不就知道了!找不到是你的循环出错了!
      

  7.   


     if($mail->AddAttachment($_FILES['file']['tmp_name'][$i],$_FILES['file']['name'][$i]))
     {
       //成功
     }
     else
     {
       //失败 做些什么,比如写入日志
     } 
      

  8.   

    同学,我最近做了这个,给你吧//$files 是由表单传过来的的文件集如, <input type="file" name="files[]" /> ...
    //$files = $_FILES['files'];
    foreach($files['name'] as $k => $f){
    if(is_uploaded_file($files['tmp_name'][$k])){
    $succ .= @move_uploaded_file($files['tmp_name'][$k], SERVER_ROOT.$up_dir. basename($files['name'][$k])) ? $files['name'][$k].',' : '';
    }
    }不过还是建议
    print_r($_FILES);
    看一下数组结构哈,与其他的input值的数组结构有所不同,不能想当然,不能意淫
      

  9.   

    不好意思,很久了,问题我已找到,下载了新版的phpmailer类就可以了