我想做个多文件上传,就像qq添加附件那样的,点击添加按钮就直接出来浏览框。有什么好的方法啊

解决方案 »

  1.   

    这个需要在客户端安装软件的,比如ActiveX.
      

  2.   

    多文件上传,这个html控件貌似没办法处理,除非自己写active控件,或者flash,as3有文件上传类可以用。
      

  3.   

    flash的swfupload多文件上传不错 
      

  4.   

    http://www.swfupload.org/ 官网
    搜下 php swfupload有很多实例
      

  5.   

    php swfupload在网上没找到好的,看了还是不是很明白,谁有实例啊,贴一个上来吧
      

  6.   

    谁有修改过swfupload的,给个例子啊,
      

  7.   

    呵呵 刚前几天刚刚做了你说的类似这样的 也是多文件上传 我是这样的 多个文件上传将文件的ID号用SESSION记录 并用个临时变量来保存 最后保存的时候 出来SESSION 在更新临时变量就可以了 就是有点麻烦啊......
      

  8.   

    是用swfupload做的啊,可否贴下代码啊
      

  9.   

    不是...就是普通的上传文件 比较乱哈 可以参考下
    <?php
    /**
    * 小区数据库图片上传
    * @Created 2010-7-7下午02:56:43
    * @name upfile_db.php
    * @author [email protected]
    * @version 1.0
    * ChengDu CandorSoft Co., Ltd.
    * @version $Id:upfile_db.php ,v 1.0 下午02:56:43 jc Exp $
    */
    require_once 'config.php'; //引入全局配置
    check_login(); //检查用户是否登录
    $user_name = uname; //获取用户名
    $img_array = array();
    // 加载系统函数
    require_once('../includes/functions.php');
     // 生成SecondHouse对象
    $esf = new SecondHouse;
    $resold = new Resold;
    $pdo=new MysqlPdo();
    extract($_GET);
    //增加小区图片
     if ($_POST)
     {
    extract($_POST);
        if (empty($picid))
        {
      $picid = '100000';
        }
        $info = $pdo->getRow("select * from fc114_user_database where id='$dbid'");
    //$picarray = explode(',',$_SESSION['info']);
    $img = $info['attach_id'].$_SESSION['info'];
    $picarray = explode(',',$img);
    //$picarray = explode(',',$_SESSION[info]);
    $num = count($picarray);  if ($num>5)
      {
      echo "<script>alert('最多只能上传5张图片')</script>";
      }
      else if ($_FILES['file1']['size']>226291) 
      {
      echo "<script>alert('图片最大只允许200K以内')</script>";
      }
      else 
      {
     
         $upload = new UploadFile( $_FILES['file1']);
               $iCount = $upload->upload();
               $aInfo = $upload->getSaveInfo();
               $time = time();
                 for($i=0; $i<$iCount; $i++){
                    $arrInfo = $aInfo[$i];
                // 加附件
                    $pdo->add(array(
                        "name"=>$arrInfo['name'], 
                        "url"=>$arrInfo['url'], 
                        "type"=>$arrInfo['type'], 
                        "size"=>$arrInfo['size'], 
                        "checksum"=>$arrInfo['checksum'],
                        "update_at"=>$time), DB_PREFIX_LAYOUT."esf_attach");
                    $p =$pdo->getLastInsID();
                    
                 }
         $_SESSION['info'] .= $p.',';
      } }
     //删除指定图片
     if ($_GET['action']=='del')
     {
     
    extract($_POST);
    //显示图片列表
    if (!empty($dbid)) //编辑状态
    {
    $pinfo = $pdo->getRow("select * from fc114_user_database where id='$dbid'");
    if (is_array($pinfo) && eregi($attach_id,$pinfo['attach_id'])) //删除数据库里的
    {
    $a =  str_replace($attach_id.',','',$pinfo['attach_id']);
    $pdo->execute("UPDATE fc114_user_database set attach_id='$a' where id='$dbid'"); //更新数据库 
    //图片文件一起删除
    $arrAttach = $pdo->getRow("select * from fc114_esf_attach where id='$attach_id'");
    $attach = realpath(WEB_ROOT . $arrAttach['url']);
    $m_pic = str_replace(strrchr($attach,'.'),'_m'.strrchr($attach,'.'),$attach);  
    $s_pic = str_replace(strrchr($attach,'.'),'_s'.strrchr($attach,'.'),$attach); 
    @unlink($s_pic);
    @unlink($m_pic);
    @unlink($attach);
    $pdo->execute("DELETE FROM `fc114_esf_attach` WHERE (`id`='$attach_id')");
    }
    else //删除Session保存的图片 
    {
    //图片文件一起删除
    $arrAttach = $pdo->getRow("select * from fc114_esf_attach where id='$attach_id'");
    $attach = realpath(WEB_ROOT . $arrAttach['url']);
    $m_pic = str_replace(strrchr($attach,'.'),'_m'.strrchr($attach,'.'),$attach);  
    $s_pic = str_replace(strrchr($attach,'.'),'_s'.strrchr($attach,'.'),$attach); 
    @unlink($s_pic);
    @unlink($m_pic);
    @unlink($attach);
    $pdo->execute("DELETE FROM `fc114_esf_attach` WHERE (`id`='$attach_id')");
    $a = $_SESSION['info'];
    $a =  str_replace($attach_id.',','',$a);
    $_SESSION['info'] = $a;
    } }
    else //新增状态 
    {
    //图片文件一起删除
    $arrAttach = $pdo->getRow("select * from fc114_esf_attach where id='$attach_id'");
    $attach = realpath(WEB_ROOT . $arrAttach['url']);
    $m_pic = str_replace(strrchr($attach,'.'),'_m'.strrchr($attach,'.'),$attach);  
    $s_pic = str_replace(strrchr($attach,'.'),'_s'.strrchr($attach,'.'),$attach); 
    @unlink($s_pic);
    @unlink($m_pic);
    @unlink($attach);
    $pdo->execute("DELETE FROM `fc114_esf_attach` WHERE (`id`='$attach_id')");
    $a = $_SESSION['info'];
    $a =  str_replace($attach_id.',','',$a);
    $_SESSION['info'] = $a;
    }

     }
    //显示图片列表
    if (!empty($dbid)) //编辑状态
    {
    // echo 'updata';
    $info = $pdo->getRow("select * from fc114_user_database where id='$dbid'");
    //$picarray = explode(',',$_SESSION['info']);
    $img = $info['attach_id'].$_SESSION['info'];
    $picarray = explode(',',$img);
    $num = count($picarray);
    for ($i=0;$i<($num-1);$i++)
    {
    //   $img_array = array('0'=>array('id'=>'222','img'=>'/ui/img/05043120.gif'),'1'=>array('id'=>'id','img'=>'b.jpg'));
    $res = $pdo->getRow("SELECT * FROM fc114_esf_attach where id=$picarray[$i]");
        $img_array[$i]['id']=$res['id'];
        $img_array[$i]['img']=$res['url'];
    }
    }
    else  //新增状态
    {
    // echo 'add';
    $picarray = explode(',',$_SESSION['info']);
    $num = count($picarray);
    for ($i=0;$i<($num-1);$i++)
    {
    //   $img_array = array('0'=>array('id'=>'222','img'=>'/ui/img/05043120.gif'),'1'=>array('id'=>'id','img'=>'b.jpg'));
    $res = $pdo->getRow("SELECT * FROM fc114_esf_attach where id=$picarray[$i]");
        $img_array[$i]['id']=$res['id'];
        $img_array[$i]['img']=$res['url'];
    }
    }// unset($_SESSION['info']);
    ?>
    <html>
    <head><title>upfile</title>
    <link href="/ui/css/common.css" rel="stylesheet" type="text/css" >
    <link href="/ui/member/css/htgl.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="/ui/js/jquery_last.js"></script>
    <script type="text/javascript" src="/ui/js/common.js"></script>
    <script type="text/javascript" src="/scripts/jquery-lightbox-0.5/js/jquery.lightbox-0.5.min.js"></script><script type="text/javascript">
    function ajax_send(img_url)
    {

    $('#up').show();
    document.send_img.submit();
    }
    function deletePic(id)
    {
    $.ajax({
       type: "POST",
       url: "upfile.php",
       data: "action=ajax&attach_id="+id,
       success: function(msg){
       return true;
       }
    });
    }
    </script><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
    <body>
    <form action="upfile_db.php" name="send_img" method="post" enctype="multipart/form-data">
    <input type="hidden" name="dbid" value="<?php echo $dbid;?>">
    <div id="uploadPic"  value="">
    <ul>
    <?php
    for($i=0;$i<count($img_array);$i++)
    {
    ?>
    <li
     picurl="" id="up" ><div class="displayimg"><img 
    src="<?php if(empty($img_array[$i]['img'])){
       echo '/ui/img/05043120.gif';}
       else
       {
       echo $img_array[$i]['img'];}
      
       ?>" /></div>
          <a class="delete" href="?action=del&attach_id=<?php echo $img_array[$i]['id']?>&dbid=<?php echo $dbid;?>" title="删除该图片" 
    >删
    除该图片</a></li>
    <?php
    }
    ?>
    </ul>
    <div name="divUploader" class="cls_divUploader">
    <div class="loadbutton">
    <input id="fileUploadInput" name="file1" type="file" onChange="ajax_send(this.value);"></div>&nbsp;<span style="display:inline;" class="upload_ok"></span>
    <span class="upload_error" style="display: none;"></span>
    <span class="upload_ing"  style="display:none">正在上传中,请稍等……</span>
    <span class="upload_maxnum" style="display: none;">上传成功!</span>
    </div>
    <input id="backFunction" name="backFunction" value="$.c.Uploader.finish" type="hidden">
    <input name="Pic" id="Pic" value="/p1/big/n_3592859281665.jpg|/p1/big/n_3592865323265.jpg|/p1/big/n_3592851524865.jpg" type="hidden"><input name="PicDesc" id="PicDesc" value="||" type="hidden">
    <input name="PicPos" id="PicPos" value="2" type="hidden"><style>
    #uploadPic ul{list-style-type:none;margin:0px;padding:0px}
    #uploadPic li{float:left;width:82px;height:108px;margin:0 5px 10px 0;padding-bottom:3px; overflow:hidden; background:#eee; position:relative}
    #uploadPic .displayimg{width:80px;height:80px; display:table-cell; vertical-align:middle; text-align:center; *display:block; *font-size:72px; border:1px solid #ccc; overflow:hidden;background:#fff}
    #uploadPic .displayimg img{vertical-align:middle}
     #uploadPic div{clear:both}
    #uploadPic input.picDesc{width:80px; *width:78px; text-align:center; margin:0; border:1px solid #7F9DB9; margin-top:2px; display:none;}
    #uploadPic span.upload_error{background-color:#FFD7D7; color:#000; padding:4px; font-family:Tahoma; line-height:24px;}
    .cls_divUploader {height:150px; background-color:Transparent;}
    .loadbutton{width:74px;height:21px;background:url(/ui/img/loadbutton.gif);display:inline-block;position:relative;overflow:hidden;vertical-align:middle;float:left;cursor:pointer}
    #fileUploadInput {position:absolute; top:-2px; right:-2px; font-size:36px; filter:alpha(opacity:0); opacity: 0; height:20px;}
    .upload_ok{font-family:Tahoma}
    .delete{ display:block; width:13px; height:12px; background:url(/ui/img/closeyes.gif) no-repeat 0 0; line-height:100px; overflow:hidden; position:absolute; top:3px; right:3px; z-index:999}
    .upload_maxnum {color:#F00}
    .upload_ing {color:#F00}
    </style></div>
    </form>
    </body>
    </html>
      

  10.   

    js dom + php 数组处理。
      

  11.   

    我们老大要求可以多选的呢,好像必须用flash才行,php还是能做参考的,感谢[szzfl]共享代码的
      

  12.   

    在你下载 SWFUpload v2.2.1 地方,有一个 SWFUpload v2.2.0.1 Samples
    他的 demo/Features Demo 就是一个多选的实例
      

  13.   

    答案是这个貌似不是php的事情.
    可以使用javascript 模拟一个文件一个文件上传,或者都放在一个form里面一次提交就好了。
      

  14.   

    用flex 做 多文件上传…做出来就是flash,