asp实现语音上传

  • 来源: aspcool 作者: sevenleaf   2010-04-28/11:40
  • <script language="javascript">
    function openScript(url, width, height){
    var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=yes' );
    }
    </script>
    <form action="save.asp" method="POST" enctype="multipart/form-data">
    <tr>
    <td width="17%" height="66">选择语音</td>
    <td height="66" colspan="5">
    <input type="file" name="wav" class="lan">
    <input type="submit" name="Submit4" value="确定上传" class="lan"> <input name="button" type="button" class="bu" value="有声档案" onClick="openScript('../play.asp?id=<%=session("id")%>','','scrollbars=no,resizable=no,width=340,height=200')"></td>
    </tr>
    </form>
    表 sound 字段 id numeric 9 (自增) wav image 16 wavinfo varchar 50 wavsize numeric
    save.asp '将声音文件写入数据库
    <%@ Language=VBScript %>
    <!--#include file="../conn.asp"-->
    <%
    Response.expires=0
    Server.ScriptTimeout =3600
    call main()
    sub main()
    FormSize = Request.TotalBytes
    FormData = Request.BinaryRead( FormSize )
    bncrlf=chrb(13) & chrb(10)
    divider=leftb(FormData,instrb(FormData,bncrlf)-1)
    datastart=instrb(FormData,bncrlf & bncrlf)+4
    dataend=instrb(datastart+1,formdata,divider)-datastart
    Wav = WavUp(FormSize,Formdata)
    strTXT=mid(formdata,instr(formdata,Wav)+len(Wav)+1)
    strTXT=bin2str(strTXT)
    'wavinfo=findVar("wavinfo",strTXT)
    set RS=server.createobject("ADODB.recordset")
    SQL="select wav,wavsize,wavinfo from sound"
    RS.Open SQL,conn,1,3
    RS.Addnew
    RS("wavinfo")=wavinfo
    RS("wavsize")=dataend-2
    if Len(Wav)>1 then
    RS("wav").Appendchunk Wav
    end if
    RS.Update
    RS.Close
    set RS=nothing
    conn.close
    set conn=nothing
    'response.Write(Request.ServerVariables ("REMOTE_ADDR"))
    response.Write("<script language='javascript'>alert('语音上传成功了,请返回!');window.location.reload('sound.asp');</script>")
    response.end
    end sub
    Function bin2str(binstr)
    Dim varlen,clow,ccc,skipflag
    skipflag=0
    ccc = ""
    varlen=LenB(binstr)
    For i=1 To varlen
    If skipflag=0 Then
    clow = MidB(binstr,i,1)
    If AscB(clow) > 127 Then
    ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
    skipflag=1
    Else
    ccc = ccc & Chr(AscB(clow))
    End If
    Else
    skipflag=0
    End If
    Next
    bin2str = ccc
    End Function
    Function WavUp(formsize,formdata)
    bncrlf=chrb(13) & chrb(10)
    divider=leftb(formdata,instrb(formdata,bncrlf)-1)
    datastart=instrb(formdata,bncrlf & bncrlf)+4
    dataend=instrb(datastart+1,formdata,divider)-datastart
    WavUp=midb(formdata,datastart,dataend)
    End Function
    Function findVar(varName,strTxt)
    startPos=1
    strLen=len(varName)+2
    for i=1 to len(strTXT)
    varStart=instr(startPos,strTXT,varName)+strLen+3
    varEnd=instr(varStart,strTXT,"--")-2
    varValLen=varEnd-varStart
    inVar=mid(strTXT,varStart,varValLen)
    findVar=findVar & inVar
    startPos=instr(varStart,strTXT,varName)
    if startPos=0 then exit for
    findVar=findVar & ","
    next
    End function
    %>
    wav.asp '读取数据
    <%@ Language=VBScript %>
    <% session.timeout=25%>
    <%
    set conn=server.CreateObject("adodb.connection")
    connstr="Provider=sqloledb.1;Persist Security Info=False;User ID=sa;Initial Catalog=database;Data source=127.0.0.1;pwd="
    conn.open connstr
    if err.number<>0 or err then
    err.clear
    response.write Err.Description
    response.end
    %>
    <script language="javascript">
    alert("网络现在繁忙,数据库连接发生错误,请等待几分钟再访问。")
    </script>
    <%end if%>
    <%
    dim RS,id
    set RS=Server.CreateObject("ADODB.Recordset")
    SQL="select wav from sound where id='"&request("id")&"'"
    RS.open SQL,conn,1,1
    Response.ContentType = "audio/x-wav"
    Response.BinaryWrite RS("wav").getChunk(7500000)
    'RS.close
    'set RS=nothing
    conn.close
    set conn=nothing
    %>
    play.asp '试听
    <!--<embed src="wav.asp?ID=6%>" AUTOSTART="true" LOOP="TRUE" HEIGHT="45" WIDTH="320" VOLUME="100"><br>-->
    <!-- Set ShowControls, ShowDisplay, ShowStatusBar 的值设定为 0,则不会显示在视频窗口下相对应的事物 -->
    <OBJECT ID="NSPlay" WIDTH=300 HEIGHT=145 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" standby="加载 Microsoft Windows Media Player 组件..." type="application/x-oleobject">
    <PARAM NAME="FileName" VALUE="wav.asp?id=<%=request("id")%>">
    <PARAM NAME="ShowControls" VALUE="1">
    <PARAM NAME="ShowDisplay" VALUE="1">
    <PARAM NAME="ShowStatusBar" VALUE="1">
    <PARAM NAME="AutoSize" VALUE="1">
    <embed src="wav.asp?uid=<%=request("id")%>" width="320" height="125" type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" filename="husteradio.asx" Name="NSPlay" ShowControls="1" ShowDisplay="1" ShowStatusBar="0">
    </OBJECT>


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多