使用swfupload上传控件,如何提交用户输入的信息连同文件路径一起存入数据库。

时间:2022-08-29 08:37:19
swfupload的上传是在page_load里面操作的。

在page_load里面。将上传的文件更名并将更名后的名称放在一hiddenfiled中。

在用户点击提交按钮来保存其他的文本框的信息到数据库的时候,不能得到hiddenfiled中的值?

各位有什么好的建议?

9 个解决方案

#1


有使用过swfupload没有?

#2


顶下  直接用fileupload不行?

#3


既然是异步上传,那其他表单项目最好也用异步保存。

文件上传后,将文件名返回回来,存在一个隐藏域中,然后点击保存的时候 一起保存到数据库 

#4


 $(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);

#5


文件名返回回来,存在一个隐藏域中,然后点击保存的时候 一起保存到数据库 

保存到hiddenfiled中,还是不能得到文件名.
关键是上传在page_upload中处理,
如果能在button的事件中处理就好了

#6


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

#7


这个问题你弄好了吗?我也遇到了同样的问题。
能讲解下吗?

#8


对于上传大文件,用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为标识通过数据库把需要的参数(文件名、大小等)取出来. 

虽然感觉这方法有些别扭,但在两个项目中运行得还不错。不知谁有更好的方法,大家互相交流一下。 

#9


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

#1


有使用过swfupload没有?

#2


顶下  直接用fileupload不行?

#3


既然是异步上传,那其他表单项目最好也用异步保存。

文件上传后,将文件名返回回来,存在一个隐藏域中,然后点击保存的时候 一起保存到数据库 

#4


 $(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);

#5


文件名返回回来,存在一个隐藏域中,然后点击保存的时候 一起保存到数据库 

保存到hiddenfiled中,还是不能得到文件名.
关键是上传在page_upload中处理,
如果能在button的事件中处理就好了

#6


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

#7


这个问题你弄好了吗?我也遇到了同样的问题。
能讲解下吗?

#8


对于上传大文件,用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为标识通过数据库把需要的参数(文件名、大小等)取出来. 

虽然感觉这方法有些别扭,但在两个项目中运行得还不错。不知谁有更好的方法,大家互相交流一下。 

#9


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