swfupload的上传是在page_load里面操作的。在page_load里面。将上传的文件更名并将更名后的名称放在一hiddenfiled中。在用户点击提交按钮来保存其他的文本框的信息到数据库的时候,不能得到hiddenfiled中的值?各位有什么好的建议?

解决方案 »

  1.   

    顶下  直接用fileupload不行?
      

  2.   

     $(document).ready(function() {  
        $("#uploadify").uploadify({
        'uploader'       : 'scripts/uploadify.swf',
        'script'         : 'DoFileUpLoad.aspx',
        'cancelImg'      : 'images/cancel.png',
        'queueID'        : 'fileQueues',
        'auto'           : true ,
        'multi'          : false,
        'sizeLimit'      : 10000000, //控制上传文件的大小,单位byte10240000
        'simUploadLimit' :3, //多文件上传时,同时上传文件数目限制
        'buttonImg'      :'images/addfileses.gif',
        'height'         :'21px',
        
      
        'onSelect':function(event,queueID,fileObj){
              //选择文件时触发
            
        
        
        },
        
        'onOpen':function(event,queueID,fileObj){
           var filesize=parseInt(fileObj.size)/1000000;
              AllFileSize=AllFileSize+filesize;
             // 
              if(AllFileSize >1)
              {
                  alert("上传附件大小总和不能超过10M");
                  $("#uploadify").uploadifyCancel(queueID);
                
              }
              
        },
        'onCancel':function(event,queueID,fileObj,data){
            var filesize=parseInt(fileObj.size )/1000000;
            AllFileSize=AllFileSize-filesize;
            
        },
             'onComplete':function(event, queueID, fileObj, response, data){
                     
                      var requestdata=eval('('+response +')');
                      var error=requestdata.error;
                      var filename=requestdata.filename;
                      var filesize=parseInt(fileObj.size)/1000000;
                      if($.trim(error)!="")
                      {
                        // alert("文件:“" + filename + "”" + error);
                      }
                      else
                      {
                     
                        $("#fileQueues").append("<div style='border: 1px dashed #C0C0C0; margin-top:10px'><span style='margin-left:5px'>文件名:"+ filename +" </span><span style='margin-left:5px'>文件大小:"+ filesize +"MB </span> <span style='margin-left:20px'><a style='color:blue;' href='javascript:void(0)' onclick=\"DelFile($(this),'"+ filesize +"')\">[ 删 除 ]</a></span><input name='hi_filename' type='hidden' value='"+ filename +"' /></div>");
            
                      }
        }     });
     
        });
        
    function  ForDight1(Dight,How)  {
     Dight  =(Dight*Math.pow(10,How)/Math.pow(10,How)).toFixed(How); 
     return  Dight; 
    }//删除文件
    function DelFile(obj,filesize)
    {
       AllFileSize=AllFileSize-filesize;
       obj_parent =obj.parent().parent();
       obj_parent.remove();}
    //自动保存到草稿箱
    function AutoSave()
    {
       //获取上传后的文件名列表
       var FileQueues="";
       $("#fileQueues").find(":input[name='hi_filename']").each(function(){
       
          FileQueues=FileQueues+","+$(this).val();
       });
       
       var objComposeTo = $("#objComposeTo").val();//收件人
       var objComposeCc= $("#objComposeCc").val();//抄送
       var objComposeBcc=$("#objComposeBcc").val(); //密送
       var objComposeSubject=$("#objComposeSubject").val(); //主题
       var txtBodyContent=FCKeditorAPI.GetInstance("txtBodyContent").GetXHTML();//内容
       //alert(txtBodyContent);
       var cbOK="0";//发送时同时保存到[已发送]
       if($("#cbOK").attr("checked")!="") cbOK="1";
       
       var cbInstancy="0";//紧急
       if($("#cbInstancy").attr("checked")!="") cbInstancy="1";
       
       var Receipt="0";//已读回执
       if($("#Receipt").attr("checked")!="") Receipt="1";
       
       var DingSend="0";//定时发送
       if($("#DingSend").attr("checked")!="") DingSend="1";
       
      var txtTime=$("#txtTime").val();
      
      var DropDownList1=$("#DropDownList1").val();
      
      var DropDownList2=$("#DropDownList2").val();
       
      var MailID=$("#MailID").val();
       $.post("NewMail.aspx?ac=AutoSave",{MailID:""+ MailID +"",FileQueues:""+ FileQueues +"",objComposeTo:""+ objComposeTo +"",objComposeCc:""+ objComposeCc +"",objComposeBcc:""+ objComposeBcc +"",objComposeSubject:""+ objComposeSubject +"",txtBodyContent:""+ txtBodyContent +"",cbOK:""+ cbOK +"",cbInstancy:""+ cbInstancy +"",Receipt:""+ Receipt +"",DingSend:""+ DingSend +"",txtTime:""+ txtTime +"",DropDownList1:""+ DropDownList1 +"",DropDownList2:""+ DropDownList2 +""},function(data){
            var dd=new Date();
           var sub=data.split('|');
           if(sub[0]=="1")
           {
             
             
             $("#MailID").val(sub[1]);
             $("#SaveResoultInfo_Div").html("邮件已经存入草稿箱,保存时间:"+dd.getHours() +":"+ dd.getMinutes()+":"+dd.getSeconds()  );
             $("#SaveResoultInfo_Div").show("fast");
           }
           else
           {
             $("#SaveResoultInfo_Div").html("邮件存入草稿箱失败,保存时间:"+dd.getHours() +":"+ dd.getMinutes()+":"+dd.getSeconds()  );
             $("#SaveResoultInfo_Div").show("fast");
           }
           //alert(data);
           
       })
       
    }//每5分钟保存一次
    //setInterval("AutoSave()",300000);
      

  3.   

    文件名返回回来,存在一个隐藏域中,然后点击保存的时候 一起保存到数据库 保存到hiddenfiled中,还是不能得到文件名.
    关键是上传在page_upload中处理,
    如果能在button的事件中处理就好了
      

  4.   

    http://www.cnblogs.com/peaceli/archive/2009/01/16/1377198.html
    里面有代码。。
    我试着用过,里面的文件进IO过程中取消有问题,然后删除时只可以删一个不过这个好改
    还有就是上传大小为零的文件时提示图标有时有有时没有
    代码强大的一塌糊涂,你要是能整明白就好了
      

  5.   

    对于上传大文件,用SWFUPLOAD比较理想,稳定性不错,速度也快。但SWFUPLOAD上传文件时是重新开一个会话,与原来的会话没有任何关系,因此用Sessiona或hiddenfiled都无法进行传参。
    我是用数据库一个临时表来传参数。主要思路如下: 
    1、在uploadfile.aspx页面  upload_url: 设为 " <%=strasp %>" 
    2、在uploadfile.aspx.cs文件 
    (1) 增加 public string strasp = "flashupload.aspx?sid=0"; 
    (2)在Page_Load中 
      if (!IsPostBack) 
      ParamInit();
    //在ParamInit()中产生唯一sid,并设strasp="flashload.aspx?sid"+sid,可把需要的参数一起写入数据库,把sid通过session或viewstate存起来供上传完成后提交入库时使用.(sid起标识作用。)
    3、在文件上传后的处理文件flashupload.aspx.cs的page_load中 
    (1)先取得传过来的sid: string sid= Request.QueryString["sid"].ToString(); 
    (2)以sid为标识,把文件名、文件大小等需要的参数写入数据库临时表 
    4、文件上传完成后,在uploadfile.aspx页面提交入库的代码中,以sid为标识通过数据库把需要的参数(文件名、大小等)取出来. 虽然感觉这方法有些别扭,但在两个项目中运行得还不错。不知谁有更好的方法,大家互相交流一下。 
      

  6.   

    都这么多年了这个帖子,不过8楼的理解很真正确,SWFUpload组件确实又新建了一个会话,通过Session以及request的setAttribute等方法都无法解决。只能是将数据传入到数据库中作为临时数据,没有什么好方法了