⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ewupload.asp

📁 AspMaker调用的自定义包
💻 ASP
字号:
<!--##session upload##-->
<% 
' File upload functions for ASPMaker 5+
' (C) 2006 e.World Technology Ltd.

' Config for file upload
Const EW_UploadDestPath = "<!--##=PROJ.UploadPath##-->" ' upload destination path
Const EW_UploadAllowedFileExt = "<!--##=PROJ.UploadAllowedFileExt##-->" ' allowed file extensions

Const EW_UploadCharset = "<!--##=PROJ.CharSet##-->"

' Function to return path of the uploaded file
'	Parameter: If PhyPath is true(1), return physical path on the server;
'	           If PhyPath is false(0), return relative URL
Function ewUploadPathEx(PhyPath, DestPath)
	Dim Pos
	If PhyPath Then
		ewUploadPathEx = Request.ServerVariables("APPL_PHYSICAL_PATH")
		ewUploadPathEx = ewIncludeTrailingDelimiter(ewUploadPathEx, PhyPath)
		ewUploadPathEx = ewUploadPathEx & Replace(DestPath, "/", "\")
	Else
		ewUploadPathEx = Request.ServerVariables("APPL_MD_PATH")
		Pos = InStr(1, ewUploadPathEx, "Root", 1)
		If Pos > 0 Then	ewUploadPathEx = Mid(ewUploadPathEx, Pos+4)
		ewUploadPathEx = ewIncludeTrailingDelimiter(ewUploadPathEx, PhyPath)
		ewUploadPathEx = ewUploadPathEx & DestPath
	End If
	ewUploadPathEx = ewIncludeTrailingDelimiter(ewUploadPathEx, PhyPath)
End Function

' Function to change the file name of the uploaded file
Function ewUploadFileNameEx(Folder, FileName)
	Dim OutFileName
	
	' By default, ewUniqueFileName() is used to get an unique file name.
	' Amend your logic here
	OutFileName = ewUniqueFileName(Folder, FileName)

	' Return computed output file name
	ewUploadFileNameEx = OutFileName
End Function

' Function to return path of the uploaded file
' returns global upload folder, for backward compatibility only
Function ewUploadPath(PhyPath)
	ewUploadPath = ewUploadPathEx(PhyPath, EW_UploadDestPath)
End Function

' Function to change the file name of the uploaded file
' use global upload folder, for backward compatibility only
Function ewUploadFileName(FileName)
	ewUploadFileName = ewUploadFileNameEx(ewUploadPath(True), FileName)
End Function

' Function to generate an unique file name (filename(n).ext)
Function ewUniqueFileName(Folder, FileName)
	If FileName = "" Then FileName = ewDefaultFileName()

	If FileName = "." Then
		Response.Write "Invalid file name: " & FileName
		Response.End
		Exit Function
	End If
	
	If Folder = "" Then
		Response.Write "Unspecified folder"
		Response.End
		Exit Function
	End If
	
	Dim Name, Ext, Pos
	Name = ""
	Ext = ""
	Pos = InStrRev(FileName, ".")
	If Pos = 0 Then
		Name = FileName
		Ext = ""
	Else
		Name = Mid(FileName, 1, Pos-1)
		Ext = Mid(FileName, Pos+1)
	End If
	
	Folder = ewIncludeTrailingDelimiter(Folder, True)
	
	Dim fso
	Set fso = Server.CreateObject("Scripting.FileSystemObject")
	
	If Not fso.FolderExists(Folder) Then
		If Not ewCreateFolder(Folder) Then
			Response.Write "Folder does not exist: " & Folder
			Set fso = Nothing
			Exit Function
		End If
	End If
	
	Dim Suffix, Index
	Index = 0
	Suffix = ""
	
	' Check to see if filename exists
	While fso.FileExists(folder & Name & Suffix & "." & Ext)
		Index = Index + 1
		Suffix = "(" & Index & ")"
	Wend
	Set fso = Nothing

	' Return unique file name
	ewUniqueFileName = Name & Suffix & "." & Ext
	
End Function

' Function to create a default file name (yyyymmddhhmmss.bin)
Function ewDefaultFileName
	Dim DT
	DT = Now()
	ewDefaultFileName = ewZeroPad(Year(DT), 4) & ewZeroPad(Month(DT), 2) &  _
		ewZeroPad(Day(DT), 2) & ewZeroPad(Hour(DT), 2) & _
		ewZeroPad(Minute(DT), 2) & ewZeroPad(Second(DT), 2) & ".bin"
End Function

' Function to check the file type of the uploaded file
Function ewUploadAllowedFileExt(FileName)
	If Trim(FileName & "") = "" Then
		ewUploadAllowedFileExt = True
		Exit Function
	End If
	Dim Ext, Pos, arExt, FileExt
	arExt = Split(EW_UploadAllowedFileExt & "", ",")
	Ext = ""
	Pos = InStrRev(FileName, ".")
	If Pos > 0 Then	Ext = Mid(FileName, Pos+1)
	ewUploadAllowedFileExt = False
	For Each FileExt in arExt
	  If LCase(Trim(FileExt)) = LCase(Ext) Then
	    ewUploadAllowedFileExt = True
	    Exit For
	  End If
	Next
End Function

' Function to include the last delimiter for a path
Function ewIncludeTrailingDelimiter(Path, PhyPath)
	If PhyPath Then
		If Right(Path, 1) <> "\" Then Path = Path & "\"
	Else
		If Right(Path, 1) <> "/" Then Path = Path & "/"
	End If
	ewIncludeTrailingDelimiter = Path
End Function

' Function to write the paths for config/debug only
Sub ewWriteUploadPaths
	Response.Write "Request.ServerVariables(""APPL_PHYSICAL_PATH"")=" & _
		Request.ServerVariables("APPL_PHYSICAL_PATH") & "<br>"
	Response.Write "Request.ServerVariables(""APPL_MD_PATH"")=" & _
		Request.ServerVariables("APPL_MD_PATH") & "<br>"
End Sub 

'===============================================================================
' Other functions for file upload (Do not modify)

Function stringToByte(toConv)
	Dim i, tempChar
	For i = 1 to Len(toConv)
		tempChar = Mid(toConv, i, 1)
		stringToByte = stringToByte & ChrB(AscB(tempChar))
	Next
End Function

Private Function ByteToString(ToConv)
	On Error Resume Next
 	For I = 1 to LenB(ToConv)
 	  ByteToString = ByteToString & Chr(AscB(MidB(ToConv,i,1)))
 	Next
End Function

Function ConvertToBinary(RawData)
	Dim oRs
	Set oRs = Server.CreateObject("ADODB.Recordset")
	' Create field in an empty RecordSet
	Call oRs.Fields.Append("Blob", 205, LenB(RawData)) ' Add field with type adLongVarBinary
	Call oRs.Open()
	Call oRs.AddNew()
	Call oRs.Fields("Blob").AppendChunk(RawData & ChrB(0))
	Call oRs.Update()
	' Save Blob Data
	ConvertToBinary = oRs.Fields("Blob").GetChunk(LenB(RawData))
	' Close RecordSet
	Call oRs.Close()
	Set oRs = Nothing
End Function

Function ConvertToUnicode(RawData)
	Dim oRs		
	Set oRs = Server.CreateObject("ADODB.Recordset")
	' Create field in an empty recordset
	Call oRs.Fields.Append("Text", 201, LenB(RawData)) ' Add field with type adLongVarChar
	Call oRs.Open()
	Call oRs.AddNew()
	Call oRs.Fields("Text").AppendChunk(RawData & ChrB(0))
	Call oRs.Update()
	' Save Unicode Data
	ConvertToUnicode = oRs.Fields("Text").Value
	' Close recordset
	Call oRs.Close()
	Set oRs = Nothing
End Function

Function ConvertToText(objStream, iStart, iLength, binData)
	On Error Resume Next
	If EW_UploadCharset <> "" Then
		Dim tmpStream
		Set tmpStream = Server.CreateObject("ADODB.Stream")
		tmpStream.Type = 1 'adTypeBinary
		tmpStream.Mode = 3 'adModeReadWrite
		tmpStream.Open
		objStream.Position = iStart
		objStream.CopyTo tmpStream, iLength
		tmpStream.Position = 0
		tmpStream.Type = 2 'adTypeText
		tmpStream.Charset = EW_UploadCharset
		ConvertToText = tmpStream.ReadText
		tmpStream.Close
		Set tmpStream = Nothing
	Else
		ConvertToText = ByteToString(binData)
	End If
	ConvertToText = Trim(ConvertToText & "")
End Function

Function getValue(dict, name)
	Dim gv
	If dict.Exists(name) Then
		gv = CStr(dict(name).Item("Value"))
		gv = Left(gv, Len(gv)-2)
		getValue = gv
	Else
		getValue = ""
	End If
End Function

Function getFileData(dict, name)
	If dict.Exists(name) Then
		getFileData = dict(name).Item("Value")
		If LenB(getFileData) Mod 2 = 1 Then
			getFileData = getFileData & ChrB(0)
		End If
	Else
		getFileData = ""
	End If
End Function

Function getFileName(dict, name)
	Dim temp, tempPos
	If dict.Exists(name) Then
		temp = dict(name).Item("FileName")
		tempPos = 1 + InStrRev(temp, "\")
		getFileName = Mid(temp, tempPos)
	Else
		getFileName = ""
	End If
End Function

Function getFileSize(dict, name)
	If dict.Exists(name) Then
		getFileSize = LenB(dict(name).Item("Value"))
	Else
		getFileSize = 0
	End If
End Function

Function getFileContentType(dict, name)
	If dict.Exists(name) Then
		getFileContentType = dict(name).Item("ContentType")
	Else
		getFileContentType = ""
	End If
End Function

Function ewFolderExists(Folder)
	Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	ewFolderExists = fso.FolderExists(Folder)
	Set fso = Nothing
End Function

Sub ewDeleteFile(FilePath)
	On Error Resume Next
	Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	If FilePath <> "" And fso.FileExists(FilePath) Then
		fso.DeleteFile(FilePath)
	End If
	Set fso = Nothing
End Sub

Sub ewRenameFile(OldFilePath, NewFilePath)
	On Error Resume Next
	Dim fso
	Set fso = Server.CreateObject("Scripting.FileSystemObject")
	If OldFilePath <> "" And fso.FileExists(OldFilePath) Then
		fso.MoveFile OldFilePath, NewFilePath
	End If
	Set fso = Nothing
End Sub

Function ewCreateFolder(Folder)
	On Error Resume Next
	ewCreateFolder = False
	Dim fso
	Set fso = Server.CreateObject("Scripting.FileSystemObject")
	If Not fso.FolderExists(Folder) Then
		If ewCreateFolder(fso.GetParentFolderName(Folder)) Then
			fso.CreateFolder(Folder)
			If Err.Number = 0 Then ewCreateFolder = True
		End If
	Else
		ewCreateFolder = True
	End If
	Set fso = Nothing
End Function

Function ewSaveFile(Folder, FileName, FileData)
	On Error Resume Next
	ewSaveFile = False
	If ewCreateFolder(Folder) Then
		Set oStream = Server.CreateObject("ADODB.Stream")
		oStream.Type = 1 ' 1=adTypeBinary
		oStream.Open
		oStream.Write ConvertToBinary(FileData)
		oStream.SaveToFile Folder & FileName, 2 ' 2=adSaveCreateOverwrite
		oStream.Close
		Set oStream = Nothing
		If Err.Number = 0 Then ewSaveFile = True
	End If
End Function

Function ewConvertLength(b)
	ewConvertLength = CLng(AscB(LeftB(b, 1)) + (AscB(RightB(b, 1)) * 256))
End Function
Function ewConvertLength2(b)
	ewConvertLength2 = CLng(AscB(RightB(b, 1)) + (AscB(LeftB(b, 1)) * 256))
End Function

' Get image dimension
Sub ewGetImageDimension(img, wd, ht)
	Dim sPNGHeader, sGIFHeader, sBMPHeader, sJPGHeader, sHeader, sImgType
	sImgType = "(unknown)"
	' image headers, do not changed
	sPNGHeader = ChrB(137) & ChrB(80) & ChrB(78)
	sGIFHeader = ChrB(71) & ChrB(73) & ChrB(70)
	sBMPHeader = ChrB(66) & ChrB(77)
	sJPGHeader = ChrB(255) & ChrB(216) & ChrB(255)
	sHeader = MidB(img, 1, 3)
	' Handle GIF
	If sHeader = sGIFHeader Then
		sImgType = "GIF"
		wd = ewConvertLength(MidB(img, 7, 2))
		ht = ewConvertLength(MidB(img, 9, 2))
	' Handle BMP
	ElseIf LeftB(sHeader, 2) = sBMPHeader Then
		sImgType = "BMP"
		wd = ewConvertLength(MidB(img, 19, 2))
		ht = ewConvertLength(MidB(img, 23, 2))
	' Handle PNG
	ElseIf sHeader = sPNGHeader Then
		sImgType = "PNG"
		wd = ewConvertLength2(MidB(img, 19, 2))
		ht = ewConvertLength2(MidB(img, 23, 2))
	' Handle JPG
	Else
		Dim size, markersize, pos, bEndLoop
		size = LenB(img)
		pos = InStrB(img, sJPGHeader)
		If pos <= 0 Then
			wd = -1
			ht = -1
			Exit Sub
		End If
		sImgType = "JPG"
		pos = pos + 2
		bEndLoop = False
		Do While Not bEndLoop and pos < size
			Do While AscB(MidB(img, pos, 1)) = 255 and pos < size
				pos = pos + 1
			Loop
			If AscB(MidB(img, pos, 1)) < 192 or AscB(MidB(img, pos, 1)) > 195 Then
				markersize = ewConvertLength2(MidB(img, pos+1, 2))
				pos = pos + markersize + 1
			Else
				bEndLoop = True
			End If
		Loop
		If Not bEndLoop Then
			wd = -1
			ht = -1
		Else
			wd = ewConvertLength2(MidB(img, pos+6, 2))
			ht = ewConvertLength2(MidB(img, pos+4, 2))
		End If
	End If
End Sub
%>
<!--##/session##-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -