如何上傳asp文件
㈠ asp上傳文件怎麼做啊
1.html
---------------------
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#E4F1E6">
<FORM METHOD="post" NAME="form1" ACTION="2.asp" ENCTYPE="multipart/form-data">
<tr>
<td align="right"><input type="file" name="file"> </td>
<td><input type="submit" name="Submit" value="上傳">
<input type="reset" name="Submit2" value="重置"></td>
</tr>
</FORM>
</table>
----------------
2.asp:
--------
<%OPTION EXPLICIT%>
<%
class clsUp '文件上傳類
'------------------------
Dim Form,File
Dim AllowExt_ '允許上傳類型(白名單)
Dim NoAllowExt_ '不允許上傳類型(黑名單)
Private oUpFileStream '上傳的數據流
Private isErr_ '錯誤的代碼,0或true表示無錯
Private ErrMessage_ '錯誤的字元串信息
Private isGetData_ '指示是否已執行過GETDATA過程
'------------------------------------------------------------------
'類的屬性
Public Property Get Version
Version="先鋒上傳類(無懼類改進安全版) Version 2.0"
End Property
Public Property Get isErr '錯誤的代碼,0或true表示無錯
isErr=isErr_
End Property
Public Property Get ErrMessage '錯誤的字元串信息
ErrMessage=ErrMessage_
End Property
Public Property Get AllowExt '允許上傳類型(白名單)
AllowExt=AllowExt_
End Property
Public Property Let AllowExt(Value) '允許上傳類型(白名單)
AllowExt_=LCase(Value)
End Property
Public Property Get NoAllowExt '不允許上傳類型(黑名單)
NoAllowExt=NoAllowExt_
End Property
Public Property Let NoAllowExt(Value) '不允許上傳類型(黑名單)
NoAllowExt_=LCase(Value)
End Property
'----------------------------------------------------------------
'類實現代碼
'初始化類
Private Sub Class_Initialize
isErr_ = 0
NoAllowExt="" '黑名單,可以在這里預設不可上傳的文件類型,以文件的後綴名來判斷,不分大小寫,每個每綴名用;號分開,如果黑名單為空,則判斷白名單
NoAllowExt=LCase(NoAllowExt)
AllowExt="" '白名單,可以在這里預設可上傳的文件類型,以文件的後綴名來判斷,不分大小寫,每個後綴名用;號分開
AllowExt=LCase(AllowExt)
isGetData_=false
End Sub
'類結束
Private Sub Class_Terminate
on error Resume Next
'清除變數及對像
Form.RemoveAll
Set Form = Nothing
File.RemoveAll
Set File = Nothing
oUpFileStream.Close
Set oUpFileStream = Nothing
End Sub
'分析上傳的數據
Public Sub GetData (MaxSize)
'定義變數
on error Resume Next
if isGetData_=false then
Dim RequestBinDate,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
Dim sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName
'代碼開始
If Request.TotalBytes < 1 Then '如果沒有數據上傳
isErr_ = 1
ErrMessage_="沒有數據上傳"
Exit Sub
End If
If MaxSize > 0 Then '如果限制大小
If Request.TotalBytes > MaxSize Then
isErr_ = 2 '如果上傳的數據超出限制大小
ErrMessage_="上傳的數據超出限制大小"
Exit Sub
End If
End If
Set Form = Server.CreateObject ("Scripting.Dictionary")
Form.CompareMode = 1
Set File = Server.CreateObject ("Scripting.Dictionary")
File.CompareMode = 1
Set tStream = Server.CreateObject ("ADODB.Stream")
Set oUpFileStream = Server.CreateObject ("ADODB.Stream")
oUpFileStream.Type = 1
oUpFileStream.Mode = 3
oUpFileStream.Open
oUpFileStream.Write Request.BinaryRead (Request.TotalBytes)
oUpFileStream.Position = 0
RequestBinDate = oUpFileStream.Read
iFormEnd = oUpFileStream.Size
bCrLf = ChrB (13) & ChrB (10)
'取得每個項目之間的分隔符
sSpace = MidB (RequestBinDate,1, InStrB (1,RequestBinDate,bCrLf)-1)
iStart = LenB(sSpace)
iFormStart = iStart+2
'分解項目
Do
iInfoEnd = InStrB (iFormStart,RequestBinDate,bCrLf & bCrLf)+3
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iFormStart
oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sInfo = tStream.ReadText
'取得表單項目名稱
iFormStart = InStrB (iInfoEnd,RequestBinDate,sSpace)-1
iFindStart = InStr (22,sInfo,"name=""",1)+6
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
'如果是文件
If InStr (45,sInfo,"filename=""",1) > 0 Then
Set oFileInfo = new clsFileInfo
'取得文件屬性
iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
iFindEnd = InStr (iFindStart,sInfo,""""&vbCrLf,1)
sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileName = GetFileName(sFileName)
oFileInfo.FilePath = GetFilePath(sFileName)
oFileInfo.FileExt = GetFileExt(sFileName)
iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14
iFindEnd = InStr (iFindStart,sInfo,vbCr)
oFileInfo.FileMIME = Mid(sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileStart = iInfoEnd
oFileInfo.FileSize = iFormStart -iInfoEnd -2
oFileInfo.FormName = sFormName
file.add sFormName,oFileInfo
else
'如果是表單項目
tStream.Close
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iInfoEnd
oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sFormValue = tStream.ReadText
If Form.Exists (sFormName) Then
Form (sFormName) = Form (sFormName) & ", " & sFormValue
else
Form.Add sFormName,sFormValue
End If
End If
tStream.Close
iFormStart = iFormStart+iStart+2
'如果到文件尾了就退出
Loop Until (iFormStart+2) >= iFormEnd
RequestBinDate = ""
Set tStream = Nothing
isGetData_=true
end if
End Sub
'保存到文件,自動覆蓋已存在的同名文件
Public Function SaveToFile(Item,Path)
SaveToFile=SaveToFileEx(Item,Path,True)
End Function
'保存到文件,自動設置文件名
Public Function AutoSave(Item,Path)
AutoSave=SaveToFileEx(Item,Path,false)
End Function
'保存到文件,OVER為真時,自動覆蓋已存在的同名文件,否則自動把文件改名保存
Private Function SaveToFileEx(Item,Path,Over)
On Error Resume Next
Dim oFileStream
Dim tmpPath
Dim nohack '防黑緩沖
isErr=0
Set oFileStream = CreateObject ("ADODB.Stream")
oFileStream.Type = 1
oFileStream.Mode = 3
oFileStream.Open
oUpFileStream.Position = File(Item).FileStart
oUpFileStream.CopyTo oFileStream,File(Item).FileSize
nohack=split(path,".") '重要修改,防止黑客二進制"01"斷名!!!
tmpPath=nohack(0)&"."&nohack(ubound(nohack)) '重要修改,防止黑客二進制"01"斷名!!!
if Over then
if isAllowExt(GetFileExt(tmpPath)) then
oFileStream.SaveToFile tmpPath,2
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳!"
End if
Else
Path=GetFilePath(Path)
if isAllowExt(File(Item).FileExt) then
do
Err.Clear()
nohack=split(Path&GetNewFileName()&"."&File(Item).FileExt,".") '重要修改,防止黑客二進制"01"斷名!!!
tmpPath=nohack(0)&"."&nohack(ubound(nohack)) '重要修改,防止黑客二進制"01"斷名!!!
oFileStream.SaveToFile tmpPath
loop Until Err.number<1
oFileStream.SaveToFile Path
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳!"
End if
End if
oFileStream.Close
Set oFileStream = Nothing
if isErr_=3 then SaveToFileEx="" else SaveToFileEx=GetFileName(tmpPath)
End Function
'取得文件數據
Public Function FileData(Item)
isErr_=0
if isAllowExt(File(Item).FileExt) then
oUpFileStream.Position = File(Item).FileStart
FileData = oUpFileStream.Read (File(Item).FileSize)
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳!"
FileData=""
End if
End Function
'取得文件路徑
Public function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = Left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End function
'取得文件名
Public Function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End function
'取得文件的後綴名
Public Function GetFileExt(FullPath)
If FullPath <> "" Then
GetFileExt = LCase(Mid(FullPath,InStrRev(FullPath, ".")+1))
Else
GetFileExt = ""
End If
End function
'取得一個不重復的序號
Public Function GetNewFileName()
dim ranNum
dim dtNow
dtNow=Now()
ranNum=int(90000*rnd)+10000
GetNewFileName=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum
End Function
Public Function isAllowExt(Ext)
if NoAllowExt="" then
isAllowExt=cbool(InStr(1,";"&AllowExt&";",LCase(";"&Ext&";")))
else
isAllowExt=not CBool(InStr(1,";"&NoAllowExt&";",LCase(";"&Ext&";")))
end if
End Function
End Class
'文件屬性類
Class clsFileInfo
Dim FormName,FileName,FilePath,FileSize,FileMIME,FileStart,FileExt
End Class
%>
<%
dim upfile,formPath,ServerPath,FSPath,formName,FileName,oFile,upfilecount
upfilecount=0
set upfile=new clsUp ''建立上傳對象
upfile.NoAllowExt="asp;exe;htm;html;aspx;cs;vb;js;" '設置上傳類型的黑名單
upfile.GetData (204800) '取得上傳數據,限制最大上傳200K,102400位元組=100K
%>
<html>
<head>
<title>文件上傳</title>
<style type="text/css">
<!--
.p9{ font-size: 9pt; font-family: 宋體 }
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body leftmargin="20" topmargin="20" class="p9">
<%
if upfile.isErr then '如果出錯
select case upfile.isErr
case 1
Response.Write "你沒有上傳數據呀???是不是搞錯了??"
case 2
Response.Write "你上傳的文件超出伺服器的限制,最大200K"
end select
else
%>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" class="p9" style="border-collapse: collapse">
<tr bgcolor="#CCCCCC">
<td height="25" valign='middle'> 本地文件 </td>
<td valign='middle'> 大小(位元組) </td>
<td valign='middle'> 上傳到 </td>
<td valign='middle'> 狀態 </td>
<td valign='middle'>11111111</td>
</tr>
<%
FSPath=GetFilePath(Server.mappath("upfile.asp"),"\")'取得當前文件在伺服器路徑
ServerPath=GetFilePath(Request.ServerVariables("HTTP_REFERER"),"/")'取得在網站上的位置
for each formName in upfile.file '列出所有上傳了的文件
set oFile=upfile.file(formname)
FileName=upfile.form(formName)'取得文本域的值
if not FileName>"" then FileName=oFile.filename'如果沒有輸入新的文件名,就用原來的文件名
'upfile.SaveToFile formname,FSPath&FileName ''保存文件 也可以使用AutoSave來保存,參數一樣,但是會自動建立新的文件名
upfile.AutoSave formname,FSPath&FileName ''保存文件 也可以使用AutoSave來保存,參數一樣,但是會自動建立新的文件名
%>
<tr>
<td height="20" valign='middle'> <%=oFile.FilePath&oFile.FileName%> </td>
<td valign='middle'> <%=oFile.filesize%> </td>
<td valign='middle'> <A HREF="<%=serverpath&FileName%>"><%=FileName%></A> </td>
<td valign='middle'> <%
if upfile.iserr then
Response.Write upfile.errmessage
else
upfilecount=upfilecount+1
Response.Write "上傳成功"
end if
%> </td>
<td align="center" valign='middle'><%=FileName%></td>
</tr><%
set oFile=nothing
next
%>
<%
end if
set upfile=nothing '刪除此對象
%>
</table>
</p>[<a href="1.asp">返回</a>]
</body>
</html>
<%
function GetFilePath(FullPath,str)
If FullPath <> "" Then
GetFilePath = left(FullPath,InStrRev(FullPath, str))
Else
GetFilePath = ""
End If
End function
Function CheckDir(FolderPath)
dim fso
folderpath=Server.MapPath(folderpath)
Set fso = Server.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FolderPath) then
'存在
CheckDir = True
Else
'不存在
CheckDir = False
End if
Set fso = nothing
End Function
%>
㈡ 怎樣用FTP工具上傳ASP文件
打開
FLASHFXP
建立站點的連接
輸入ID
密碼
,
選擇文件,打開FTP上對應的文件夾點上傳就行啦。
㈢ 【急】asp如何文件上傳
下面是用ASP寫的,已經測試過
文件上傳有個非常重要的地方,就是限制格式,嚴格規定只有什麼格式才可以上傳
否則可能會被黑客利用
這些光用DW自動生成是做不出來的 要自己寫代碼
<%
if Request.QueryString("submit")="swf_Pic" then
uploadpath=""
uploadsize="1024"
uploadtype="jpg/gif/png/bmp"
Set Uprequest=new UpLoadClass
Uprequest.SavePath=uploadpath
Uprequest.MaxSize=uploadsize*1024
Uprequest.FileType=uploadtype
AutoSave=true
Uprequest.open
if Uprequest.form("file_Err")<>0 then
select case Uprequest.form("file_Err")
case 1:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上傳不成功!文件超過"&uploadsize&"k [<a href='javascript:history.go(-1)'>重新上傳</a>]</font></div>"
case 2:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上傳不成功!文件格式不對 [<a href='javascript:history.go(-1)']>重新上傳</a>]</font></div>"
case 3:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上傳不成功!文件太大且格式不對 [<a href='javascript:history.go(-1)'>重新上傳</a>]</font></div>"
end select
response.write str
else
response.write "<script language=""javascript"">parent.form.swf_Pic.value='"&Uprequest.SavePath&Uprequest.Form("file")&"';"
response.write "</script>"
response.write "<div style=""padding-top:5px;padding-bottom:5px;""> <font color=red>文件上傳成功</font> [<a href='javascript:history.go(-1)'>重新上傳</a>]</div>"
end if
Set Uprequest=nothing
end if
response.write "<form name=form action=?action=swf_Pic&submit=swf_Pic method=post enctype=multipart/form-data>"
response.write "<input type=file name=file class='tx' size='20'> "
response.write "<input type=submit name=submit value=上傳 class=""tx1"">"
response.write "</form>"
'============================================================上傳函數
Class UpLoadClass
Private p_MaxSize,p_FileType,p_SavePath,p_AutoSave,p_Error
Private objForm,binForm,binItem,strDate,lngTime
Public FormItem,FileItem
Public Property Get Version
Version="Rumor UpLoadClass Version 2.0"
End Property
Public Property Get Error
Error=p_Error
End Property
Public Property Get MaxSize
MaxSize=p_MaxSize
End Property
Public Property Let MaxSize(lngSize)
if isNumeric(lngSize) then
p_MaxSize=clng(lngSize)
end if
End Property
Public Property Get FileType
FileType=p_FileType
End Property
Public Property Let FileType(strType)
p_FileType=strType
End Property
Public Property Get SavePath
SavePath=p_SavePath
End Property
Public Property Let SavePath(strPath)
p_SavePath=replace(strPath,chr(0),"")
End Property
Public Property Get AutoSave
AutoSave=p_AutoSave
End Property
Public Property Let AutoSave(byVal Flag)
select case Flag
case 0:
case 1:
case 2:
case false:Flag=2
case else:Flag=0
end select
p_AutoSave=Flag
End Property
Private Sub Class_Initialize
p_Error = -1
p_MaxSize = 153600
p_FileType = "jpg/gif"
p_SavePath = ""
p_AutoSave = 0
strDate = replace(cstr(Date()),"-","")
lngTime = clng(timer()*1000)
Set binForm = Server.CreateObject("ADODB.Stream")
Set binItem = Server.CreateObject("ADODB.Stream")
Set objForm = Server.CreateObject("Scripting.Dictionary")
objForm.CompareMode = 1
End Sub
Private Sub Class_Terminate
objForm.RemoveAll
Set objForm = nothing
Set binItem = nothing
binForm.Close()
Set binForm = nothing
End Sub
Public Sub Open()
if p_Error=-1 then
p_Error=0
else
Exit Sub
end if
Dim lngRequestSize,binRequestData,strFormItem,strFileItem
Const strSplit="'"">"
lngRequestSize=Request.TotalBytes
if lngRequestSize<1 then
p_Error=4
Exit Sub
end if
binRequestData=Request.BinaryRead(lngRequestSize)
binForm.Type = 1
binForm.Open
binForm.Write binRequestData
Dim bCrLf,strSeparator,intSeparator
bCrLf=ChrB(13)&ChrB(10)
intSeparator=InstrB(1,binRequestData,bCrLf)-1
strSeparator=LeftB(binRequestData,intSeparator)
Dim p_start,p_end,strItem,strInam,intTemp,strTemp
Dim strFtyp,strFnam,strFext,lngFsiz
p_start=intSeparator+2
Do
p_end =InStrB(p_start,binRequestData,bCrLf&bCrLf)+3
binItem.Type=1
binItem.Open
binForm.Position=p_start
binForm.CopyTo binItem,p_end-p_start
binItem.Position=0
binItem.Type=2
binItem.Charset="gb2312"
strItem=binItem.ReadText
binItem.Close()
p_start=p_end
p_end =InStrB(p_start,binRequestData,strSeparator)-1
binItem.Type=1
binItem.Open
binForm.Position=p_start
lngFsiz=p_end-p_start-2
binForm.CopyTo binItem,lngFsiz
intTemp=Instr(39,strItem,"""")
strInam=Mid(strItem,39,intTemp-39)
if Instr(intTemp,strItem,"filename=""")<>0 then
if not objForm.Exists(strInam&"_From") then
strFileItem=strFileItem&strSplit&strInam
if binItem.Size<>0 then
intTemp=intTemp+13
strFtyp=Mid(strItem,Instr(intTemp,strItem,"Content-Type: ")+14)
strTemp=Mid(strItem,intTemp,Instr(intTemp,strItem,"""")-intTemp)
intTemp=InstrRev(strTemp,"\")
strFnam=Mid(strTemp,intTemp+1)
objForm.Add strInam&"_Type",strFtyp
objForm.Add strInam&"_Name",strFnam
objForm.Add strInam&"_Path",Left(strTemp,intTemp)
objForm.Add strInam&"_Size",lngFsiz
if Instr(intTemp,strTemp,".")<>0 then
strFext=Mid(strTemp,InstrRev(strTemp,".")+1)
else
strFext=""
end if
if left(strFtyp,6)="image/" then
binItem.Position=0
binItem.Type=1
strTemp=binItem.read(10)
if strcomp(strTemp,chrb(255) & chrb(216) & chrb(255) & chrb(224) & chrb(0) & chrb(16) & chrb(74) & chrb(70) & chrb(73) & chrb(70),0)=0 then
if Lcase(strFext)<>"jpg" then strFext="jpg"
binItem.Position=3
do while not binItem.EOS
do
intTemp = ascb(binItem.Read(1))
loop while intTemp = 255 and not binItem.EOS
if intTemp < 192 or intTemp > 195 then
binItem.read(Bin2Val(binItem.Read(2))-2)
else
Exit do
end if
do
intTemp = ascb(binItem.Read(1))
loop while intTemp < 255 and not binItem.EOS
loop
binItem.Read(3)
objForm.Add strInam&"_Height",Bin2Val(binItem.Read(2))
objForm.Add strInam&"_Width",Bin2Val(binItem.Read(2))
elseif strcomp(leftB(strTemp,8),chrb(137) & chrb(80) & chrb(78) & chrb(71) & chrb(13) & chrb(10) & chrb(26) & chrb(10),0)=0 then
if Lcase(strFext)<>"png" then strFext="png"
binItem.Position=18
objForm.Add strInam&"_Width",Bin2Val(binItem.Read(2))
binItem.Read(2)
objForm.Add strInam&"_Height",Bin2Val(binItem.Read(2))
elseif strcomp(leftB(strTemp,6),chrb(71) & chrb(73) & chrb(70) & chrb(56) & chrb(57) & chrb(97),0)=0 or strcomp(leftB(strTemp,6),chrb(71) & chrb(73) & chrb(70) & chrb(56) & chrb(55) & chrb(97),0)=0 then
if Lcase(strFext)<>"gif" then strFext="gif"
binItem.Position=6
objForm.Add strInam&"_Width",BinVal2(binItem.Read(2))
objForm.Add strInam&"_Height",BinVal2(binItem.Read(2))
elseif strcomp(leftB(strTemp,2),chrb(66) & chrb(77),0)=0 then
if Lcase(strFext)<>"bmp" then strFext="bmp"
binItem.Position=18
objForm.Add strInam&"_Width",BinVal2(binItem.Read(4))
objForm.Add strInam&"_Height",BinVal2(binItem.Read(4))
end if
end if
objForm.Add strInam&"_Ext",strFext
objForm.Add strInam&"_From",p_start
intTemp=GetFerr(lngFsiz,strFext)
if p_AutoSave<>2 then
objForm.Add strInam&"_Err",intTemp
if intTemp=0 then
if p_AutoSave=0 then
strFnam=GetTimeStr()
if strFext<>"" then strFnam=strFnam&"."&strFext
end if
binItem.SaveToFile Server.MapPath(p_SavePath&strFnam),2
objForm.Add strInam,strFnam
end if
end if
else
objForm.Add strInam&"_Err",-1
end if
end if
else
binItem.Position=0
binItem.Type=2
binItem.Charset="gb2312"
strTemp=binItem.ReadText
if objForm.Exists(strInam) then
objForm(strInam) = objForm(strInam)&","&strTemp
else
strFormItem=strFormItem&strSplit&strInam
objForm.Add strInam,strTemp
end if
end if
binItem.Close()
p_start = p_end+intSeparator+2
loop Until p_start+3>lngRequestSize
FormItem=split(strFormItem,strSplit)
FileItem=split(strFileItem,strSplit)
End Sub
Private Function GetTimeStr()
lngTime=lngTime+1
GetTimeStr=strDate&lngTime
End Function
Private Function GetFerr(lngFsiz,strFext)
dim intFerr
intFerr=0
if lngFsiz>p_MaxSize and p_MaxSize>0 then
if p_Error=0 or p_Error=2 then p_Error=p_Error+1
intFerr=intFerr+1
end if
if Instr(1,LCase("/"&p_FileType&"/"),LCase("/"&strFext&"/"))=0 and p_FileType<>"" then
if p_Error<2 then p_Error=p_Error+2
intFerr=intFerr+2
end if
GetFerr=intFerr
End Function
Public Function Save(Item,strFnam)
Save=false
if objForm.Exists(Item&"_From") then
dim intFerr,strFext
strFext=objForm(Item&"_Ext")
intFerr=GetFerr(objForm(Item&"_Size"),strFext)
if objForm.Exists(Item&"_Err") then
if intFerr=0 then
objForm(Item&"_Err")=0
end if
else
objForm.Add Item&"_Err",intFerr
end if
if intFerr<>0 then Exit Function
if VarType(strFnam)=2 then
select case strFnam
case 0:strFnam=GetTimeStr()
if strFext<>"" then strFnam=strFnam&"."&strFext
case 1:strFnam=objForm(Item&"_Name")
end select
end if
binItem.Type = 1
binItem.Open
binForm.Position = objForm(Item&"_From")
binForm.CopyTo binItem,objForm(Item&"_Size")
binItem.SaveToFile Server.MapPath(p_SavePath&strFnam),2
binItem.Close()
if objForm.Exists(Item) then
objForm(Item)=strFnam
else
objForm.Add Item,strFnam
end if
Save=true
end if
End Function
Public Function GetData(Item)
GetData=""
if objForm.Exists(Item&"_From") then
if GetFerr(objForm(Item&"_Size"),objForm(Item&"_Ext"))<>0 then Exit Function
binForm.Position = objForm(Item&"_From")
GetData=binFormStream.Read(objForm(Item&"_Size"))
end if
End Function
Public Function Form(Item)
if objForm.Exists(Item) then
Form=objForm(Item)
else
Form=""
end if
End Function
Private Function BinVal2(bin)
dim lngValue,i
lngValue = 0
for i = lenb(bin) to 1 step -1
lngValue = lngValue *256 + ascb(midb(bin,i,1))
next
BinVal2=lngValue
End Function
Private Function Bin2Val(bin)
dim lngValue,i
lngValue = 0
for i = 1 to lenb(bin)
lngValue = lngValue *256 + ascb(midb(bin,i,1))
next
Bin2Val=lngValue
End Function
End Class
%>
㈣ 怎麼樣用ASP上傳文件
<%@ language="javascript"%>
<%
var self = Request.serverVariables("SCRIPT_NAME");
if (Request.serverVariables("REQUEST_METHOD")=="POST")
{
var oo = new uploadFile();
oo.path = "myFile"; //存放路徑,為空表示當前路徑,默認為uploadFile
oo.named = "file"; //命名方式,date表示用日期來命名,file表示用文件名本身,默認為file
oo.ext = "all"; //允許上傳的擴展名,all表示都允許,默認為all
oo.over = true; //當存在相同文件名時是否覆蓋,默認為false
oo.size = 1*1024*1024; //最大位元組數限制,默認為1G
oo.upload();
Response.write('<script type="text/javascript">location.replace("' self '")</script>');
}
//ASP無組件上傳類
function uploadFile()
{
var bLen = Request.totalBytes;
var bText = Request.binaryRead(bLen);
var oo = Server.createObject("ADODB.Stream");
oo.mode = 3;
this.path = "uploadFile";
this.named = "file";
this.ext = "all";
this.over = false;
this.size = 1*1024*1024*1024; //1GB
//文件上傳
this.upload = function ()
{
var o = this.getInfo();
if (o.size>this.size)
{
alert("文件過大,不能上傳!");
return;
}
var f = this.getFileName();
var ext = f.replace(/^. \./,"");
if (this.ext!="all"&&!new RegExp(this.ext.replace(/,/g,"|"),"ig").test(ext))
{
alert("目前暫不支持擴展名為 " ext " 的文件上傳!");
return;
}
if (this.named=="date")
{
f = new Date().toLocaleString().replace(/\D/g,"") "." ext;
}
oo.open();
oo.type = 1;
oo.write(o.bin);
this.path = this.path.replace(/[^\/\\]$/,"$&/");
var fso = Server.createObject("Scripting.FileSystemObject");
if(this.path!=""&&!fso.folderExists(Server.mapPath(this.path)))
{
fso.createFolder(Server.mapPath(this.path));
}
try
{
oo.saveToFile(Server.mapPath(this.path f),this.over?2:1);
alert("上傳成功!");
}
catch(e)
{
alert("對不起,此文件已存在!");
}
oo.close();
delete(oo);
}
//獲取二進制和文件位元組數
this.getInfo = function ()
{
oo.open();
oo.type=1;
oo.write(bText);
oo.position = 0;
oo.type=2;
oo.charset="unicode";
var gbCode=escape(oo.readText()).replace(/%u(..)(..)/g,"%$2%$1");
var sPos=gbCode.indexOf(" ") 12;
var sLength=bLen-(gbCode.substring(0,gbCode.indexOf(" ")).length/3)-sPos/3-6;
oo.close();
oo.open();
oo.type = 1;
oo.write(bText);
oo.position=sPos/3;
var bFile=oo.read(sLength);
oo.close();
return { bin:bFile, size:sLength };
}
//獲取文件名
this.getFileName = function ()
{
oo.open();
oo.type = 2;
oo.writeText(bText);
oo.position = 0;
oo.charset = "gb2312";
var fileName = oo.readText().match(/filename=\"(. ?)\"/i)[1].split("\\").slice(-1)[0];
oo.close();
return fileName;
}
function alert(msg)
{
Response.write('<script type="text/javascript">alert("' msg '");</script>');
}
}
%>
<html>
<head>
<title>ASP無組件上傳類</title>
<meta http-equiv="content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form action="<%=self%>" method="post" enctype="multipart/form-data" onSubmit="return (this.upFile.value!='');">
<input type="file" name="upFile"/>
<input type="submit" value="上傳文件"/>
</form>
</body>
</html>
這個是在網上看到的 不過我試了 可以用!
㈤ ASP文件上傳
<%
return=chrB(13)&chrB(10)'構造一個回車換行符號
aa=request.BinaryRead(request.TotalBytes)
set st1=server.CreateObject("adodb.stream")
st1.mode=3
st1.type=1
st1.open
st1.write aa
'LeftB LeftB函數從字元串的起始處提取指定數目的位元組
divider=leftB(aa,clng(instrb(aa,return))-1)'使用 CInt 或 CLng 函數強制進行整數運算
datastart=instrb(aa,return&return)
'result = InStrB( [起始位置], 源字元串, 要查找的字元串 )
dataend=instrb(datastart,aa,divider)
set st2 = Server.CreateObject("adodb.stream")
st2.Type = 1
st2.Mode =3
st2.Open
st1.position=datastart+3
st1.to st2, dataend-datastart-6
'---------------------------------------
ii1=instrb(1,aa,en)
dd1=instrb(ii1,aa,en&en)
cc1=midb(aa,ii1,dd1-ii1)
'-----------------------------------
set st3 = server.CreateObject("adodb.stream")
st3.mode=3
st3.type=2
st3.open
st3.writetext cc1 '將文本裝入對象
st3.position=0
st3.charset="gb2312"
st3.position=2
bstr=st3.readtext()'讀取指定長度的文本,不指定將讀取全部
startpos=instrrev(bstr,"\")+1'instrrev返回某字元串在另一個字元串中最後出現的位置
posend=instrrev(bstr,"""")
jg=mid(bstr,startpos,posend-startpos)
st2.savetofile server.MapPath("./chen/") & "/" & jg,2
response.Write("您所上傳的文件為:" & jg)
st1.close
st2.close
st3.close
set st1=nothing
set st2=nothing
set st3=nothing
%>
靜態頁
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>無標題文檔</title>
</head>
<body>
<form name="form1" enctype="multipart/form-data" method="post" action="11.asp">
<label>
<input type="file" name="fileField" id="fileField">
</label>
<label>
<input type="submit" name="button" id="button" value="提交">
</label>
</form>
</body>
</html>
㈥ 上傳asp文件
<%@ language="javascript"%>
<%
var self = Request.serverVariables("SCRIPT_NAME");
if (Request.serverVariables("REQUEST_METHOD")=="POST")
{
var oo = new uploadFile();
oo.path = "myFile"; //存放路徑,為空表示當前路徑,默認為uploadFile
oo.named = "file"; //命名方式,date表示用日期來命名,file表示用文件名本身,默認為file
oo.ext = "all"; //允許上傳的擴展名,all表示都允許,默認為all
oo.over = true; //當存在相同文件名時是否覆蓋,默認為false
oo.size = 1*1024*1024; //最大位元組數限制,默認為1G
oo.upload();
Response.write('<script type="text/javascript">location.replace("' self '")</script>');
}
//ASP無組件上傳類
function uploadFile()
{
var bLen = Request.totalBytes;
var bText = Request.binaryRead(bLen);
var oo = Server.createObject("ADODB.Stream");
oo.mode = 3;
this.path = "uploadFile";
this.named = "file";
this.ext = "all";
this.over = false;
this.size = 1*1024*1024*1024; //1GB
//文件上傳
this.upload = function ()
{
var o = this.getInfo();
if (o.size>this.size)
{
alert("文件過大,不能上傳!");
return;
}
var f = this.getFileName();
var ext = f.replace(/^. \./,"");
if (this.ext!="all"&&!new RegExp(this.ext.replace(/,/g,"|"),"ig").test(ext))
{
alert("目前暫不支持擴展名為 " ext " 的文件上傳!");
return;
}
if (this.named=="date")
{
f = new Date().toLocaleString().replace(/\D/g,"") "." ext;
}
oo.open();
oo.type = 1;
oo.write(o.bin);
this.path = this.path.replace(/[^\/\\]$/,"$&/");
var fso = Server.createObject("Scripting.FileSystemObject");
if(this.path!=""&&!fso.folderExists(Server.mapPath(this.path)))
{
fso.createFolder(Server.mapPath(this.path));
}
try
{
oo.saveToFile(Server.mapPath(this.path f),this.over?2:1);
alert("上傳成功!");
}
catch(e)
{
alert("對不起,此文件已存在!");
}
oo.close();
delete(oo);
}
//獲取二進制和文件位元組數
this.getInfo = function ()
{
oo.open();
oo.type=1;
oo.write(bText);
oo.position = 0;
oo.type=2;
oo.charset="unicode";
var gbCode=escape(oo.readText()).replace(/%u(..)(..)/g,"%$2%$1");
var sPos=gbCode.indexOf(" ") 12;
var sLength=bLen-(gbCode.substring(0,gbCode.indexOf(" ")).length/3)-sPos/3-6;
oo.close();
oo.open();
oo.type = 1;
oo.write(bText);
oo.position=sPos/3;
var bFile=oo.read(sLength);
oo.close();
return ;
}
//獲取文件名
this.getFileName = function ()
{
oo.open();
oo.type = 2;
oo.writeText(bText);
oo.position = 0;
oo.charset = "gb2312";
var fileName = oo.readText().match(/filename=\"(. ?)\"/i)[1].split("\\").slice(-1)[0];
oo.close();
return fileName;
}
function alert(msg)
{
Response.write('<script type="text/javascript">alert("' msg '");</script>');
}
}
%>
<html>
<head>
<title>ASP無組件上傳類</title>
<meta http-equiv="content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form action="<%=self%>" method="post" enctype="multipart/form-data" onSubmit="return (this.upFile.value!='');">
<input type="file" name="upFile"/>
<input type="submit" value="上傳文件"/>
</form>
</body>
</html>
這個是在網上看到的 不過我試了 可以用!
㈦ 我需要一個ASP空間 上傳一些文件 但不知道怎麼整
步驟如下:
1.申請一個免費的ASP空間,網上很多你可以谷歌、網路一下
2.申請後記錄號你的FTP伺服器地址、用戶名、密碼等信息
3.下載一個FTP上傳工具,建議:flashfxp
挺好用
4.輸入好相關信息,直接上傳就可以了
㈧ asp文件上傳的辦法
ASP文件上傳原理分析及實現實例
摘要:在基於/的應用環境中,上傳各種類型的文件一直是困擾用戶文件管理應用的難題之一。在HTTP中上傳文件有三種機制:RFC1867,PUT和WebDAV。常用的實現方法是利用在RFC1867中引入的一個新類型:File以及ADO Stream對象。本文對上述上傳方法及實現原理作了論述,並給出了具體解決實例。
ASP FILE對象
當前,基於/模式的應用比較流行。當用戶需要將文件傳輸到上時,常用方法之一是運行FTP並將每個用戶的FTP默認目錄設為用戶的Web主目錄,這樣用戶就能運行FTP客戶程序並上傳文件到指定的 Web目錄。這就要求用戶必須懂得如何使用FTP客戶程序。因此,這種解決方案僅對熟悉FTP且富有經驗的用戶來說是可行的。 如果我們能把文件上傳功能與Web集成,使用戶僅用Web就能完成上傳任務,這對於他們來說將是非常方便的。但是,一直以來,由於File System Object的僅能傳送文本文件的局限,所以ASP最大的難題就是文件上傳問題。下面介紹的就是如何在基於HTTP協議的網頁中實現文件的上傳。
一.通過HTTP上傳的三種機制
通過HTTP上傳有三種機制:RFC1867, PUT 和 WebDAV。
PUT 是在HTTP 1.1引入了一個新的HTTP動詞。當web收到一個HTTP PUT和對象名字,它將會驗證用戶,接收HTTP流的內容,並把它直接存入web。由於這可能會對一個web站點造成破壞,並且還會失去HTTP最大的優勢:可編程性。在PUT的情況下,自己處理請求:沒有空間讓CGI或者ASP應用程序介入。唯一讓你的應用程序捕獲PUT的方法是在低層操作,ISAPI過濾層。由於相應的原因,PUT的應用很有限。
而WebDAV允許web內容的分布式認證與翻譯。它引入了幾種新的HTTP動詞,允許通過HTTP上傳,鎖定/解鎖,登記/檢驗web內容。Office 2000中的"Save to web" 就是通過WebDAV來實現的。如果你所感興趣的一切都是上傳內容,WebDAV應用得非常出色,它解決了很多問題。 然而,如果你需要在你的web應用程序裡面上傳文件,WebDAV對你就毫無用處可言。象HTTP PUT一樣,那些WebDAV的動詞是被解釋的,而不是web應用程序。你需要工作在ISAPI過濾層來訪問WebDAV的這些動詞,並在你的應用程序中解釋內容。
RFC1867 (http://www.ietf.org/rfc/rfc1867.txt) 最終被W3C在HTML3.2中接受前,是作為一種建議標准。它是一種非常簡單但是功能很強大的想法:在表單欄位中定義一個新類型。
<INPUT TYPE="FILE">
並且在表單本身加入了不同的編碼方案,不再使用典型的:
<FORM ACTION="formproc.asp" METHOD="POST">
而是使用:
<FORM ACTION="formproc.asp" METHOD="POST" ENCTYPE="multipart/form-data">
這種編碼方案在傳送大量數據的時候,比起預設的"application/x-url-encoded"表單編碼方案,顯得效率要高得多。URL編碼只有很有限的字元集,使用任何超出字元集的字元,必須用'%nn'代替,這里的nn表示相應的2個十六進制數字。例如,即使是普通的空格字元也要用'%20'代替。而RFC1867使用多部分MIME編碼,就象通常在e-mail消息中看到的那樣,不編碼來傳送大量數據,而只是在數據周圍加上很少的簡單但實用的頭部。主要的廠商都採用了建議的"瀏覽..."按鈕,用戶能很容易的使用本地"打開文件..." 對話框選擇要上傳的文件。
RFC1867仍然將大多數文件上傳的靈活方法留給了你的web應用程序。PUT用得很有限。WebDAV對內容的作者很有用,比如FrontPage用戶,但是對想在web應用程序中加入文件上傳的web開發者來說很少用到。因此,RFC1867是在web應用程序中加入文件上傳的最好的辦法。
在實際應用中,免費提供了Posting Acceptor 。ASP不懂"multipart/form-data" 編碼方案。取而代之,提供了Posting Acceptor ,Posting Acceptor是一種在上傳完成後,接受REPOST到一個ASP頁的ISAPI應用程序。
Software Artisans的SA-FileUp是最早的商業Active Server之一。幾經改進,現在作為一個純粹的ASP存在。
二.基於ASP的文件上傳實現原理分析
基本原理是:採用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出,從中截取出所需的文件數據,以二進制文件方式存檔。
下面是上傳文件頁面的一個例子(upload.htm):
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data"
Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
程序中使用了文件對象,這樣在Upload.asp中採用BinaryRead方法讀來的原始數據就不僅僅是選擇的文件本身的數據,還包含該文件在用戶硬碟上的路徑、類型、提交頁面的表單等相關信息的描述,這樣我們就需從中提取出文件的具體內容。根據分析,數據的頭部信息與數據的分界線是兩對回車換行符,尾部也有分隔信息,我們可以採用類似以下的方法獲取文件數據。
Dim FormData.FormSize,DataStart,CLStr,DivStr
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
CLStr=ChrB(13)&ChrB(10)
DataStart=InStrB(FormData.CLStr&CLStr)+4
'4是兩對回車換行符的長度
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
FormData就是文件的內容了。
中間根據需要,可進行相應的處理。最後的工作就是將文件保存了。保存的方法可以有兩種:一種是利用VB或VC之類程序中的二進制文件操作方法,在工程中加入適當的類型庫,最終編譯成DLL文件,使用時再將該DLL文件注冊就可以了。文件存貯程序如下:
Public Function SaveFile(Pathname As String) As String
Dim objContext As ObjectContext
Dim objRequest As Request
Set objContext=GetObjectContext()
Set objRequest=objContext("Request")
'以下的一段代碼是進行文件存貯的有關操作
Dim FormData() As Byte,CLStr,DivStr
Dim DataStart As Long,DataSize As Long
DataSize=objRequest.TotalBytes
Redim FormData(DataSize-1)
FormData=objRequest.BinaryRead(DataSize)
CLStr=ChrB(13) & ChrB(10)
DataStart=InStrB(FormData,CLStr & CLStr)+4
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
'創建一個二進制文件並將FormData寫入其中
Open Pathname For Binary As 1
Put #1,,FormData
Close #1
SaveFile="OK!"
End Function
第二種方法是利用ADO STREAM中提供的二進制文件操作方法來完成,保存文件的語句是: StreamOBJ.SaveToFile (fileName,2)。在 這種操作中,我們可以將有關的操作存放在一個類文件中,在應用時,直接將該類文件包含在ASP程序中就可以了。具體處理方法,請參閱有關介紹。
三.文件上傳實現方法實例
實現文件上傳可使用或無方式。對於類,比如說microsoft posting acceptor(簡稱mpa),就是公司發布的一個免費,這類的安裝也比較方便。對於的mpa,運行它的安裝文件就可以了。而一般的dll形式的,我們則需要進行注冊。例如,要使用aspcnUP.dll,只要在Window 2000上執行regsvr32 [path\]aspcnUP.dll,系統出現注冊成功的信息提示就可以使用該了;對於無類,如http://www.5xsoft.com/的無上傳類-upload_5xsoft。在使用時,只要在處理程序中包含以下的語句就可以了:
<!--#include FILE="upload.inc"-->
set upload=new upload_5xSoft '建立上傳對象
有關的屬性與操作方法,請參閱該的使用手冊。
下面是詀spcnUP.dll為例,上傳部分類型文件的源代碼(upload.asp):
<% @ language="vbscript"
Set fileUP=Server.CreateObject("aspcn.Upload")
fileUP.Maxsize=200000
fileUP.Path="d:\upfile"
fileUP.Upload
For i=0 to fileUP.Count
fieldname=fileUP.FieldName(i)
If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar"
Then
fileUP.Save fieldname
End If
Next
Set fileUP=Nothing
%>
四.結束語
應用模式還在快速地發展著,在ASP.NET中,已經內置了文件上傳的功能,使用非常簡單方便。作為一種全新的技術,ASP.NET並不只是ASP的簡單升級,它是一個用於Web開發的全新框架,其中包含了許多新的特性。ASP.NET提供了更易於編寫、結構更清晰的代碼,利用這些代碼我們將會更容易地進行再利用和共享,從而開發出更多更實用的程序來。
㈨ 怎麼上傳ASP文件到ASP空間里去
用FTP上傳工具
CuteFTP
Pro
v8.1.0
FreshFTP
V4.60
漢化版
等等的好多軟體
上傳的話首先需要你的ASP空間的地址
和上傳的密碼
然後添加你的ASP文件
然後開始上傳
最後OK!
㈩ 得到網站後台許可權,如何上傳asp馬
看看代碼是否是本地驗證,如果是把驗證的代碼去掉或者修改。本地提交你的ASP木馬。。嘗試提交 CER ASA ASPX HTR等格式的後門。。抓包看下是否能夠用截斷字元漏洞。如果能修改。。NC提交。。、
看下是否有備份資料庫的功能。如果有將ASP馬改名為JPG上傳。然後備份成ASP即可。。