文件上传 . . .

上传文件存储于文件夹里面 . . .

1. 上传页面

<div align="center">  支持上传的文件格式:图片文件(*.gif、*.jpg、*.png、*.bmp)<br>
  <span class="font"><font color="#FF0000">注意:请不要用此功能上传大于2M的文件。
  1M等于1024K,1K等于1024个字节<br>
</font></span></div>
<form method="post" action="sub_upload.asp" enctype="multipart/form-data">
  <table border=0 cellspacing=0 cellpadding=0 align=center width="333">
    <tr>
<td height=20 width=60>&nbsp;文件</TD>
<td height="16" width="371">
<input type="file" name="src" size="20" value="浏览">
&nbsp;&nbsp;
<input type="submit" value="上传" name="B1" IsShowProcessBar="True">
</td>
</tr>
</table>
</form>

2. 处理页面 sub_upload.asp

<!--#include FILE="upload.inc"-->
<%
'dim fileformat
'fileformat=mid(file.FileName,InStrRev(file.FileName, ".")+1)
'if fileformat<>"gif" or fileformat<>"jpg" or fileformat<>"png" or fileformat<>"jpeg" or fileformat<>"bmp" or fileformat<>"swf" then
'response.write "<Script>alert('您上传的文件是不符合格式的的文件!/n支持上传的文件格式有:*.gif、*.jpg、*.jpeg、*.png、*.bmp、*.swf');history.back()
'response.end
'end if
dim upload,file,formName,formPath,iCount
set upload=new upload_F
 function MakedownName()
  dim fname
    fname = now()
  fname = replace(fname,"-","")
   fname = replace(fname," ","")
  fname = replace(fname,":","")
    fname = replace(fname,"PM","")
    fname = replace(fname,"AM","")
  fname = replace(fname,"上午","")
    fname = replace(fname,"下午","")
    'fname = int(fname) + int((10-1+1)*Rnd + 1)
  MakedownName=fname
 end function
formPath="../file/"
iCount=0
for each formName in upload.file ''列出所有上传了的文件
 set file=upload.file(formName)  ''生成一个文件对象
 if file.FileSize>0 then         ''如果 FileSize > 0 说明有文件数据
newname=MakedownName()&"wangdingjun"&"."&mid(file.FileName,InStrRev(file.FileName, ".")+1)

  file.SaveAs Server.mappath(formPath&newname)   ''保存文件
  iCount=iCount+1
 else
  response.write "未找到文件 &nbsp;&nbsp;<A HREF=javascript:history.back(1)>返回</A>"
  response.end
 end if
next
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body>
<p align="center">文件:</p>
<p align="center">
<%
response.write "<font style=""color:#000000; background-color: #FF0000"">http://"&Request.ServerVariables("SERVER_NAME")&"/file/"&newname&"</font> ("&cint(file.FileSize/1024)&"K) 上传 成功!<br>"
%>
</p>
<p align="center">
请复制红底黑字的文件地址,不要有空格。
</p>
<p align="center">
<a href="upload.asp">继续上传</a>
</p>
<p align="center">
下面是您上传的文件予览
</p>
<p align="center">
<%
if (mid(file.FileName,InStrRev(file.FileName, ".")+1))="swf" then
%>
<EMBED src="../file/<%=newname%>" quality=high WIDTH=300 HEIGHT=280 TYPE='application/x-shockwave-flash'></EMBED>
<%else%>
<img src="../file/<%=newname%>">
<%end if%>
</p>
<%
set file=nothing
set upload=nothing  ''删除此对象
%>
</body>
</html> 

3. upload.inc

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim upfile_Stream
Class upload_F
dim Form,File,Version
Private Sub Class_Initialize
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version="upload Version 1.0"
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_Stream=CreateObject("Adodb.Stream")
upfile_Stream.mode=3
upfile_Stream.type=1
upfile_Stream.open
upfile_Stream.write Request.BinaryRead(Request.TotalBytes)
vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
  iStart=inString(iFormStart,"name=""")
  iEnd=inString(iStart+6,"""")
  mFormName=subString(iStart+6,iEnd-iStart-6)
  iFileNameStart=inString(iEnd+1,"filename=""")
  if iFileNameStart>0 and iFileNameStart<iFormEnd then
   iFileNameEnd=inString(iFileNameStart+10,"""")
   mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
   iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
   iEnd=inString(iStart+4,vbEnter&strDiv)
   if iEnd>iStart then
    mFileSize=iEnd-iStart-4
   else
    mFileSize=0
   end if
   set theFile=new FileInfo
   theFile.FileName=getFileName(mFileName)
   theFile.FilePath=getFilePath(mFileName)
   theFile.FileSize=mFileSize
   theFile.FileStart=iStart+4
   theFile.FormName=FormName
   file.add mFormName,theFile
  else
   iStart=inString(iEnd+1,vbEnter&vbEnter)
   iEnd=inString(iStart+4,vbEnter&strDiv)

   if iEnd>iStart then
    mFormValue=subString(iStart+4,iEnd-iStart-4)
   else
    mFormValue=""
   end if
   form.Add mFormName,mFormValue
  end if
  iFormStart=iformEnd+iDivLen
  iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub

Private Function subString(theStart,theLen)
 dim i,c,stemp
 upfile_Stream.Position=theStart-1
 stemp=""
 for i=1 to theLen
   if upfile_Stream.EOS then Exit for
   c=ascB(upfile_Stream.Read(1))
   If c > 127 Then
    if upfile_Stream.EOS then Exit for
    stemp=stemp&Chr(AscW(ChrB(AscB(upfile_Stream.Read(1)))&ChrB(c)))
    i=i+1
   else
    stemp=stemp&Chr(c)
   End If
 Next
 subString=stemp
End function

Private Function inString(theStart,varStr)
 dim i,j,bt,theLen,str
 InString=0
 Str=toByte(varStr)
 theLen=LenB(Str)
 for i=theStart to upfile_Stream.Size-theLen
   if i>upfile_Stream.size then exit Function
   upfile_Stream.Position=i-1
   if AscB(upfile_Stream.Read(1))=AscB(midB(Str,1)) then
    InString=i
    for j=2 to theLen
      if upfile_Stream.EOS then
        inString=0
        Exit for
      end if
      if AscB(upfile_Stream.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

Private Sub Class_Terminate 
  form.RemoveAll
  file.RemoveAll
  set form=nothing
  set file=nothing
  upfile_Stream.close
  set upfile_Stream=nothing
End Sub
 Private function GetFilePath(FullPath)
  If FullPath <> "" Then
   GetFilePath = left(FullPath,InStrRev(FullPath, "/"))
  Else
   GetFilePath = ""
  End If
 End  function
 
 Private function GetFileName(FullPath)
  If FullPath <> "" Then
   GetFileName = mid(FullPath,InStrRev(FullPath, "/")+1)
  Else
   GetFileName = ""
  End If
 End  function
 Private 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
End Class
Class FileInfo
  dim FormName,FileName,FilePath,FileSize,FileStart
  Private Sub Class_Initialize
    FileName = ""
    FilePath = ""
    FileSize = 0
    FileStart= 0
    FormName = ""
  End Sub
 Public function SaveAs(FullPath)
    dim dr,ErrorChar,i
    SaveAs=1
    if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
    if FileStart=0 or right(fullpath,1)="/" then exit function
    set dr=CreateObject("Adodb.Stream")
    dr.Mode=3
    dr.Type=1
    dr.Open
    upfile_Stream.position=FileStart-1
    upfile_Stream.copyto dr,FileSize
    dr.SaveToFile FullPath,2
    dr.Close
    set dr=nothing
    SaveAs=0
  end function
End Class
</SCRIPT>

4. style.css

A:visited {TEXT-DECORATION: none; color: #000000}
A:active { TEXT-DECORATION: none; color: #000000}
A:hover {TEXT-DECORATION: underline overline; color: #ff0000}
A:link {TEXT-DECORATION: none; color: #000000}
TD { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
DIV { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
FORM { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
OPTION { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
P { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
TD { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
BR { FONT-SIZE: 9pt; FONT-FAMILY: 宋体}
BODY { FONT-SIZE: 9pt; SCROLLBAR-HIGHLIGHT-COLOR: buttonface; SCROLLBAR-SHADOW-COLOR: buttonface; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: buttonhighlight; SCROLLBAR-TRACK-COLOR: #eeeeee; FONT-FAMILY: "宋体"; SCROLLBAR-DARKSHADOW-COLOR: buttonshadow}
.botton { BORDER-RIGHT: #cfcfcf 1px solid; BORDER-TOP: #cfcfcf 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: #cfcfcf 1px solid; COLOR: #FFFFFF; BORDER-BOTTOM: #cfcfcf 1px solid; FONT-FAMILY: "宋体"; BACKGROUND-COLOR: #383838}
.input { BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid}
.show1 { FONT-SIZE: 9pt; FILTER: DropShadow(Color=#000000, OffX=1.2, OffY=1.2, Positive=1)}
A.yellow:visited {TEXT-DECORATION: underline; color: #000000}
A.yellow:active { TEXT-DECORATION: none; color: #000000}
A.yellow:hover {TEXT-DECORATION: none; color: #000000}
A.yellow:link {TEXT-DECORATION: underline; color: #000000}

上传图片的程序代码就完成了 , 这是比较麻烦但还蛮实用的 , 下次再写个简单完整的上传程序 . 待续 . . .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值