asp发消息并代多个附件上传(多对多关系)

''=========msg_add.asp===========

<%@ Language=VBScript %>
<!-- #include file="../share/connectdb.asp" -->
<!-- #include file="..\share\pubfun_a.inc" -->
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 <link rel="StyleSheet" type="text/css" href="msg_css.css">
 <script language=vbscript src="..\share\pubfun_crmcli_select.vbs"></script>
</head>

<body>
<%
 Response.Expires=0
 Dim rs
 set rs=server.CreateObject("ADODB.recordset")
 dim sygbhlb,sygxmlb,i,syglb
 sygbhlb=Request.QueryString("ygbhlb")
 syglb=""
 sygxmlb=""
 if sygbhlb<>"" then
   rs.Open "select ygbh,ygxm from rs_ygb where ygbh in(" & sygbhlb & ")",conn,1,1
   do while not rs.EOF
     syglb="," & rs("ygbh")
     sygxmlb=" " & rs("ygxm")
     rs.MoveNext
   loop
   rs.Close
   if syglb<>"" then
     syglb=mid(syglb,2)
     sygxmlb=mid(sygxmlb,2)
   end if
 end if
  set rs=nothing
  conn.close
  set conn=nothing
%>
<br>
<fieldset style="position:absolute;left:1px;top:1px;width=346px;border:1" align=center>
<table class=dataclass width=100% align=center>
  <form name=frmxx id=frmxx method="post">
    <input type=hidden id=ygbhlb name=ygbhlb value="<%=syglb%>">
    <tr>
      <td width=54 class=left align=right nowrap>接收人&nbsp;</td>
      <td class=row width=402 style="border-1;border-style:solid;border-color:green;cursor:hand" onClick="vbscript:doselry" ><span id=jsrlb size="30" name=jsrlb><a><%=rtrim(sygxmlb)%></a></span>&nbsp;</td>
      <td width="457" align=right class=row id=tools name=tools><img src="image/selectman.gif" alt="选择接收人" onClick="vbscript:doselry" style="cursor:hand"> <img src="image/send.gif" alt="发送" onClick="vbscript:doFS" style="cursor:hand"> </td>
    </tr>
    <tr>
      <td width=54 class=left align=right nowrap>消息内容&nbsp;</td>
      <td class=row colspan=2><textarea class=inputarea cols=43 id=xxnr name=xxnr rows=10 style="border-1;border-style:solid;border-color:green;scrollbar-3dlight-color:a5d79c;scrollbar-arrow-color:green;scrollbar-base-color:a5d79c;scrollbar-darkshadow-color:48bb55;scrollbar-face-color:#48bb55;scrollbar-highlight-color:a5d79c;scrollbar-shadow-color:a5d79c;"></textarea>
      </td>
    </tr>
    <tr> <td width=54 class=left align=right nowrap></td>
      <td nowrap   id="td_fj"></td>
    </tr>
    <tr> <td width=54 class=left align=right nowrap>增加</td>
      <td ><input name="附件" type="button" id="button_fj"  onClick="vbscript:xzfj()" value="附件" language=javascript></td>
    </tr>
  </form>
</table>
<!--=//////////////////////////==========-BY winner 15:18 2006-3-22   增加附件的功能---//////////////////////////////////////-->
<!--===//////////////////////========-BY winner 15:18 2006-3-22   增加附件的功能--//////////////////////////////////////////--->
</fieldset>

</body>
</html>
<script language="VBScript">
  '  function  doFS()
   sub doFS
     if frmxx.ygbhlb.value="" then
         msgbox "请选择接收人",vbinformation,"提示"
         exit sub
      end if
  
        frmxx.xxnr.value=trim(frmxx.xxnr.value)
    if frmxx.xxnr.value="" then
      msgbox "您没有输入消息!",vbInformation,"提示"
      frmxx.xxnr.focus
      exit sub
    end if
    if len(frmxx.xxnr.value)>255 then
      msgbox "消息长度需要在255个字符之内!",vbInformation,"提示"
      frmxx.xxnr.focus
      exit sub
    end if
 '''''By Winnner 判断附件的大小''''''''''''''''''
 '判断附件
    i=frmxx.elements.length
    if (i<>0) then
     for j=0 to i-1
         set e=frmxx.elements(j)
           if e.type="file" then
             if trim(e.value)="" then
               alert("请选择附件")
               e.focus
               exit sub
               end if
             count=mid(e.name,3,len(e.name))
             set k=document.getElementById("fjsm"&count)
             if k is nothing then
                alert("异常错误,请刷新本页面")
                k.focus
                exit sub
             end if
             if trim(k.value)="" then
                alert("请填写附件标题")
                k.focus
               exit sub
             end if
          end if
      next 
   end if
 '''''By Winnner 判断附件的大小'''''''''''''''''' 
    
      tools.style.display="none"
      frmxx.encoding = "multipart/form-data"
      frmxx.action="msg_add_save.asp"
      frmxx.submit
  end sub
  
</script>


<SCRIPT LANGUAGE=javascript>
<!--
  function dostr(s,l)
  {
    if (s.length-1<=l){
      return s;
    }
    else
    {
      return(s.substr(0,l)+"...");
    }
 }
//-->
</SCRIPT>
<script language=vbscript>
<!--
 function doselry
  dim k,s
  if doSelRYMti(frmxx.ygbhlb.value,k,s) then
   frmxx.ygbhlb.value=k
   jsrlb.innerHTML="<a title=""" & s & """>" & dostr(s,15) & "</a>"
  end if
 end function
//-->
</script>

 
<!--===========-BY winner 15:18 2006-3-22   增加附件的功能----->
<script language="vbscript">
   function xzfj()
  dim count_obj,tr_obj,td_obj,file_obj,form_obj,count,table_obj
  dim button_obj,countview_obj
  dim str1,str2
   set form_obj=document.getElementById("frmxx")
   set fj_obj=document.getElementById("td_fj")
   if fj_obj.innertext="无附件" then
     fj_obj.innertext=""
  end if
  set count_obj=document.getElementById("count_obj")
   if (count_obj is nothing) then
    set count_obj=document.createElement("input")
        count_obj.type="hidden"
        count_obj.id="count_obj"
        count_obj.value=1
         form_obj.appendChild(count_obj)
        count=1
        count_obj.value=1
  else
    set count_obj=document.getElementById("count_obj")
         count=cint(count_obj.value)+1
        count_obj.value=count
  end if
        set div_obj=document.createElement("div")
     div_obj.id="div_"&cstr(count)
     div_obj.align="center"
       fj_obj.appendchild(div_obj)
    str1="&nbsp;&nbsp;&nbsp;&nbsp;名称:<input   type='file' name='fj"&count&"' size=20 class='input' id=fj'"&count&"'>"
   str2="<br>说明:<input   type='text' name='fjsm"&count&"' class='input' size=20 maxlength=255 id='fjsm"&count&"'>"
   str3="<input type='button' class='button' value='删除' onclick='vbscript:delthis("+""""+div_obj.id+""""+")'>"      
   div_obj.innerHtml=str1+str2+str3 
 end function

function delthis(id)
 dim child,parent
 set child_t=document.getElementById(id)
 if  (child_t is nothing ) then
 alert("对象为空")
else
  call delmain_wer(child_t)
 end if
 set parent=document.getElementById("td_fj")
if parent.hasChildNodes() =false then
   parent.innerText=""
end if
 end function
 
 function delmain_wer(obj)
    dim length,i,tt
   set tt=document.getElementById("table_obj")
    if (obj.haschildNodes) then
      length=obj.childNodes.length
     for i=(length-1) to 0 step -1
          call delmain_wer(obj.childNodes(i))       
          if obj.childNodes.length=0 then
             obj.removeNode(false)   
         end if
      next
    else
   obj.removeNode(false)
   end if
   end function
</script>
 

 
<!--===========-BY winner 15:18 2006-3-22   增加附件的功能----->





'=========msg_add_save.asp==========
<%@ Language=VBScript %>
<!-- #INCLUDE FILE="../Share/ConnectDB.asp" -->
<!-- #include file="..\share\pub_sendmsg.asp" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<%
 Response.Expires=0
%>

<!--       BY Winner  10:57 2006-3-23   添加附件功能 ----------->
    <%
  function setNothing() '关闭对象
 conn.RollBackTrans 
 set objUpload = Nothing 
 Conn.Close
 set Conn = Nothing
 %>
  <script language="vbscript">
    msgbox "异常错误,无法提交!",vbExclamation,"提示"
 history.back(0)
  </script>
  <%
   end function 
   %>
 <%
 Set objUpload = Server.CreateObject("LKOAAspcn.upload") 
     '设置文件大小,文件存储绝对路径
    objupload.maxsize=100000000   
    objupload.Path= server.MapPath("../atthfiles/oa_message_fj") & "\"
    objUpload.upload 
   %> 
 <!--       BY Winner  10:57 2006-3-23   添加附件功能 ----------->


<%
  dim i,syglb,ayglb,rs,sygbh,sxxnr
  sygbh=session("uYGBH")
  set rs=server.CreateObject("adodb.recordset")
   set rs2=server.CreateObject("adodb.recordset")
  syglb=objUpload.Form("ygbhlb")
  sxxnr=objUpload.Form("xxnr")
 
  '-------把oamessage内容写入数据库暂不带附件------------------
        if syglb<>"" then
        conn.begintrans
      sendmsg sygbh,syglb,sxxnr
       conn.committrans
       end if
  '-------把oamessage内容写入数据库暂不带附件------------------
 
 
 '=========================BY Winner  11:04 2006-3-23  start保存附件函数 ======================

function xzfj(allsendtime) '保存附件及附件记录
   dim fjbh,fileldname,oldName,newName
 
 for ii=0 to clng(objupload.count) - 1
      fieldname = objUpload.FieldName(ii)
    if objUpload.FileType(objUpload.FieldName(ii)) = "NonFileType" then
    else
       if objUpload.FileName(objUpload.FieldName(ii)) <> "" then
         '-----------完成附件编号自动添加功能------------------
     sql="select messagefjid from message_fj order by messagefjid desc"      '得到附件编号
           set rs=conn.execute(sql)
            if not rs.eof and not rs.bof then
              fjbh=rs("messagefjid")+1   '附件编号=最大的编号+1
           else
              fjbh=1   '如果为空附件编号==1
           end if   
           rs.close
          set rs=nothing
  '  response.write "fjbh="&fjbh
   
    '-----------完成附件编号自动添加功能------------------
          fjsm=constr1(objUpload.form(replace(fieldname,"fj","fjsm")))
           oldName=objUpload.FileName(objUpload.FieldName(ii))
          newName="oa_message_fj" & fjbh & "." & objUpload.FileType(objUpload.FieldName(ii))
    
 '----------------------------上传文件过滤-start----------------------
 Dim MyArray ,up
 MyArray = Array("jpg","gif","doc","pdf","ppt","txt","xls","rar","swf","fla","zip","")
  up=1
 For I = Lbound(MyArray) to Ubound(MyArray)
  if trim(Lcase(right(newName,3)))=MyArray(I) then
   up=0
   exit for
  else
   up=1
  end if
 Next
  if up=1 then
  %>
 <script language="vbscript">
  msgbox "文件格式错误!",vbInformation,"消息"
  history.back(0)
 </script>
<% 
         response.End()
   else
       up=1
   end if 
   '----------------------------上传文件过滤----end-------------------
   %>
  
   <%
            objupload.save objUpload.FieldName(ii),2,newName
      if err<>0 then
               call setnothing
               Response.end
          end if
  sql="insert into message_fj([messagefjid],[messagesendtimeid],[fjsm],[fjyslj]) values("_
              &fjbh&","&allsendtime&",'"&fjsm&"','"&newName&"')"
            set rs=conn.execute(sql)
                   if err<>0 then
                        call setnothing
                         Response.end
                   end if
        end if  
    end if
  next
 end function
  '=========================BY Winner  11:04 2006-3-23  end保存附件函数 ======================

 '----By Winner 11:46 2006-3-23在 (一次可以发多条。。对应fj中的id)--------------------
 rs2.open "Select max(allsendtime) from oa_message",conn,1,1
    dim allsendtime
 allsendtime=clng(rs2(0))
 rs2.Close
 '----By Winner 11:46 2006-3-23 (一次可以发多条。。对应fj中的id)--------------------

 
 
 call  xzfj(allsendtime)  '调用新增附件函数   传递变量是allsendtime   表示发送次数
 


 set rs=nothing
  conn.close
  set conn=nothing
%>
<script language=vbscript>
<!--
  msgbox "消息成功发出!",vbInformation,"提示"
  parent.window.close
//-->
</script>






'===============pub_sendmsg.asp==========
<%
  'sendmsg函数用来发送消息
  'jsr传递消息接收人列表(员工编号,用逗号分开)(为空发送给所有用户)
  'xxnr是消息的正文255字符之内
  'fsr为消息发送人,为0则是系统消息,为-1则是定时提醒
  function sendmsg(fsr,jsr,xxnr)
    dim i,syglb,ayglb,rs,sygbh,sxxnr,rs1,rs2,sXXXH
    sygbh=fsr
    set rs=server.CreateObject("adodb.recordset")
    set rs1=server.CreateObject("adodb.recordset")
    set rs2=server.CreateObject("adodb.recordset")
    syglb=jsr
    sxxnr=xxnr
    rs.open "select * from oa_message where 1>2",conn,3,2
    if syglb<>"" then                 '接收人列表不为空时
 
 '----By Winner 11:46 2006-3-23在循环外加一个控制总共发过多少次(一次可以发多条。。对应fj中的id)--------------------
 rs2.open "Select max(allsendtime) from oa_message",conn,1,1
    dim allsendtime
 allsendtime=clng(rs2(0))+1
 rs2.Close
 '----By Winner 11:46 2006-3-23在循环外加一个控制总共发过多少次(一次可以发多条。。对应fj中的id)--------------------
    
   ayglb=Split(syglb,",")
      for i=0 to ubound(ayglb)
        if trim(ayglb(i))<>"" then
     sxxxh=1
      '-------完成ID自动增加的功能------------
     rs2.open "Select max(xxxh) from oa_message",conn,1,1
     if not rs2.EOF then
      if rs2(0) & ""<>"" then
       sxxxh=clng(rs2(0))+1
      end if
     end if
     rs2.Close
     '-------完成ID自动增加的功能------------
      
          rs.AddNew
          rs("xxxh")=sXXXH           '消息编号
          rs("ygbh")=ayglb(i)      '收信息员工的编号
          rs("xxnr")=sxxnr          '消息内容
          rs("fsrbh")=sygbh          '发送人编号
          rs("xxfssj")=fd_a(now,"yyyy-mm-dd hh:nn:ss")  '消息发送时间
          rs("ydbz")="0"     
          rs("ydsj")=""
          rs("bz")=""
    rs("allsendtime")=allsendtime        'By  winner 添加发送次的唯一标量
          rs.Update
        end if
      next
    else
      rs1.open "select ygbh from rs_ygb where ryzt='0' or ryzt='2' ",conn,1,1           '找出所有在职员工的编号
      do while not rs1.eof
    sxxxh=1
     '-------完成ID自动增加的功能------------
     rs2.open "Select max(xxxh) from oa_message",conn,1,1
     if not rs2.EOF then
      if rs2(0) & ""<>"" then
       sxxxh=clng(rs2(0))+1
      end if
     end if
     rs2.Close
      '-------完成ID自动增加的功能------------
       rs.AddNew
        rs("ygbh")=rs1("ygbh")
        rs("xxxh")=sXXXH
        rs("xxnr")=sxxnr
        rs("fsrbh")=sygbh
        rs("xxfssj")=fd_a(now,"yyyy-mm-dd hh:nn:ss")
        rs("ydbz")="0"
        rs("ydsj")=""
        rs("bz")=""
        rs.Update
 rs1.movenext 
      loop
      rs1.close
    end if
    rs.close
    set rs=nothing
    set rs1=nothing
    set rs2=nothing
  end function
 
  function fd_a(s,sformat)
    if not isdate(s) then
        fd_a=s
        exit function
    end if
    dim y4,y2,m2,m1,d2,d1,h2,h1,n2,n1,s2,s1
    dim ss1,ss
    ss1=cdate(s)
    y4=year(ss1)
    y2=right(y4,2)
    m1=Month(ss1)
    m2=string(2-len(cstr(month(ss1))),"0") & cstr(month(ss1))
    d1=day(ss1)
    d2=string(2-len(cstr(day(ss1))),"0") & cstr(day(ss1))
    h1=Hour(ss1)
    h2=string(2-len(cstr(hour(ss1))),"0") & cstr(hour(ss1))
    n1=Minute(ss1)
    n2=string(2-len(cstr(Minute(ss1))),"0") & cstr(Minute(ss1))
    s1=Second(ss1)
    s2=string(2-len(cstr(Second(ss1))),"0") & cstr(Second(ss1))
    ss=replace(sformat,"yyyy",y4)
    ss=replace(ss,"yy",y2)
    ss=replace(ss,"mm",m2)
    ss=replace(ss,"m",m1)
    ss=replace(ss,"dd",d2)
    ss=replace(ss,"d",d1)
    ss=replace(ss,"hh",h2)
    ss=replace(ss,"h",h1)
    ss=replace(ss,"nn",n2)
    ss=replace(ss,"n",n1)
    ss=replace(ss,"ss",s2)
    ss=replace(ss,"s",s1)
    fd_a=ss
  end function
%>









''''''''''''''''''''''''''''''''''pubfun_down_file.asp-------------------组件下载..还原上传文件名---------

调用方法  <a href="../../share/pubfun_down_file.asp?orgfile=<%=rs("taskfjoldname")%>&savefile=<%=fjlj%>"   ><%=rtrim(rs("taskfjsm"))%></a>


<%@ Language = "VBScript" %>
<%
 Response.Expires=-1
 Response.Buffer=true
 
 dim orgfile,savefile
 orgfile = request("orgfile")
 savefile = request("savefile")
 if ucase(right(orgfile,4)) = ".GIF" or ucase(right(orgfile,4)) = ".JPG" THEN
 
  'Response.AddHeader "Content-disposition","inline; filename=" & orgfile
  'response.contenttype = "text/HTML"
%>
  <html>
  <head>
  <meta name="VI60_defaultClientScript" content="VBScript"> 
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <body>
  <IMG SRC="<%=savefile%>" BORDER=0>
  </body>
  </html>
<%
 ELSE    
  Response.AddHeader "Content-disposition","attachment; filename=" & orgfile
  response.contenttype = "text/text"
  dim x,pathfile
  set x=server.CreateObject("lkoaaspcn.clsDownloadFile")
  pathfile = server.MapPath(savefile)  
  Response.BinaryWrite x.GetFileBinStream(pathfile)  
  'x.DownloadFile cstr(pathfile)
  set x=nothing
 END IF
 'response.contenttype = "Application/msword"
%>














原文地址:https://www.cnblogs.com/winner/p/356718.html