正文

asp无组件文件上传2007-05-28 09:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wangsdong/26213.html

分享到:

文件上传组件:upload.asp<%   Dim stream1,stream2,istart,iend,filename  istart=1  vbEnter=Chr(13)&Chr(10) function getvalue(fstr,foro,paths)'fstr为接收的名称,foro布尔false为文件上传,true 为普通字段,path为上传文件存放路径   if foro then    getvalue=""    istart=instring(istart,fstr)     istart=istart+len(fstr)+5    iend=instring(istart,vbenter+"-----------------------------")    if istart>5+len(fstr) then    getvalue=substring(istart,iend-istart)       else    getvalue=""    end if    else     istart=instring(istart,fstr)    istart=istart+len(fstr)+13    iend=instring(istart,vbenter)-1        filename=substring(istart,iend-istart)    filename=getfilename(filename) 'CheckFileExt(fstr)'''''''''''''''''''''''''''''''''''''''''''''''''''''''    istart=instring(iend,vbenter+vbenter)+3    iend=instring(istart,vbenter+"-----------------------------")    filestart=istart    filesize=iend-istart-1    objstream.position=filestart    Set sf = Server.CreateObject("ADODB.Stream")    sf.Mode=3     sf.Type=1     sf.Open     objstream.copyto sf,FileSize          if filename<>"" then    Set rf = Server.CreateObject("Scripting.FileSystemObject")    i=0    fn=filename    while rf.FileExists(server.mappath(paths+fn))       fn=cstr(i)+filename      i=i+1      wend    filename=fn    sf.SaveToFile server.mappath(paths+filename),2    end if    getvalue=filename    end if   end function Private function GetFileName(FullPath)   If FullPath <> "" Then    GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)   Else    GetFileName = ""   End If End  function Function inString(theStart,varStr) dim i,j,bt,theLen,str InString=0 Str=toByte(varStr) theLen=LenB(Str) for i=theStart to objStream.Size-theLen    if i>objstream.size then exit Function       objstream.Position=i-1    if AscB(objstream.Read(1))=AscB(midB(Str,1)) then     InString=i     for j=2 to theLen       if objstream.EOS then          inString=0         Exit for       end if       if AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) then         InString=0         Exit For       end if     next     if InString<>0 then Exit Function    end if next End Function function toByte(Str)    dim i,iCode,c,iLow,iHigh    toByte=""    For i=1 To Len(Str)    c=mid(Str,i,1)    iCode =Asc(c)    If iCode<0 Then iCode = iCode + 65535    If iCode>255 Then      iLow = Left(Hex(Asc(c)),2)      iHigh =Right(Hex(Asc(c)),2)      toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)    Else      toByte = toByte & chrB(AscB(c))    End If    Next End function Function subString(theStart,theLen) dim i,c,stemp objStream.Position=theStart-1 stemp="" for i=1 to theLen    if objStream.EOS then Exit for    c=ascB(objStream.Read(1))    If c > 127 Then     if objStream.EOS then Exit for     stemp=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))     i=i+1    else     stemp=stemp&Chr(c)    End If Next subString=stemp End function %>1.html<HTML> <HEAD>  <TITLE> 图片和文本一同上传 </TITLE> </HEAD><style>body {font-size:12px;}</style> <BODY>    <form action="uploadfile.asp" method="post" enctype="multipart/form-data" name="form1"> 文件路径<input type="file" name="filepath"><br> &nbsp;&nbsp;标题<input type="text" name="filename"><br> <input type="submit" value="提交"> </form> </BODY></HTML> uploadfile.asp<!--#include file="upload.asp"--><%if Request.TotalBytes>0 thenset objstream=server.CreateObject("adodb.stream")objstream.Mode=3objstream.Type=1objstream.Openobjstream.Write Request.BinaryRead(Request.TotalBytes)  path=getvalue("filepath",false,"pic/")     'pic为当前目录下一个文件夹名,也可以改成../pic,即上层目录中的pic文件夹 name=getvalue("filename",true,"") response.write "文件名:"&path&"  标题:"&name' response.End End if%>  转载请注出处。

阅读(9012) | 评论(18)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册