正文

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 then
set objstream=server.CreateObject("adodb.stream")
objstream.Mode=3
objstream.Type=1
objstream.Open
objstream.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
%>

 转载请注出处。

阅读(8922) | 评论(18)


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

评论

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