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

📄 _incupload.asp

📁 Web Development Upload ASP Web Development Upload ASP Web Development Upload ASP
💻 ASP
字号:
<%
' Adjust this depending on the size 
' of the files you will be accepting
server.scripttimeout = 5400

const ForWriting = 2
const TristateTrue = -1
crlf = chr(13) & chr(10)
dim myRequest, myRequestFiles(9, 3) 
dim errMsg 

' This function retreives a field's name
function getFieldName( infoStr)
	sPos = inStr( infoStr, "name=")
	endPos = inStr( sPos + 6, infoStr, chr(34) & ";")
	if endPos = 0 then
		endPos = inStr( sPos + 6, infoStr, chr(34))
	end if
	getFieldName = mid( infoStr, sPos + 6, endPos - (sPos + 6))
end function

' This function retreives a file field's filename
function getFileName( infoStr)
	sPos = inStr( infoStr, "filename=")
	endPos = inStr( infoStr, chr(34) & crlf)
	getFileName = mid( infoStr, sPos + 10, endPos - (sPos + 10))
end function

' This function retreives a file field's mime type
function getFileType( infoStr)
	sPos = inStr( infoStr, "Content-Type: ")
	getFileType = mid( infoStr, sPos + 14)
end function


'make the upload
function Upload
' Yank the file (and anything else) that was posted
postData = ""
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
' Careful! It's binary! So, let's change 
' it into something a bit more manageable
for nIndex = 1 to LenB( biData)
	postData = postData & Chr(AscB(MidB( biData, nIndex, 1)))
next

' Having used BinaryRead, the Request.Form collection is no longer
' available to us. So, we have to parse the request variables ourselves!
' First, let's find that encoding type!
contentType = Request.ServerVariables( "HTTP_CONTENT_TYPE")
ctArray = split( contentType, ";")
' file posts only work well when the encoding is 
' "multipart/form-data", so let's check for that!
if trim(ctArray(0)) = "multipart/form-data" then
	errMsg = ""
	' grab the form boundry...
	bArray = split( trim( ctArray(1)), "=")
	boundry = trim( bArray(1))
	' now use that to split up all the variables!
	formData = split( postData, boundry)
	' now, we need to extract the information for each variable and it's data
	
	Set myRequest = CreateObject("Scripting.Dictionary")
	'Set myRequestFiles = CreateObject("Scripting.Dictionary")
	fileCount = 0
	for x = 0 to ubound( formData)
		' two sets of crlf mark the end of the information about this field
		' everything after that is the value
		infoEnd = instr( formData(x), crlf & crlf)
		if infoEnd > 0 then
			' pull the info for this field, minus the stuff at the ends...
			varInfo = mid( formData(x), 3, infoEnd - 3)
			' pull the value for this field, being sure to 
			' skip the crlf pairs at the start and the crlf-- at the end
			varValue = mid( formData(x), infoEnd + 4, len(formData(x)) - infoEnd - 7)
			' now, is this a file?
			if (instr( varInfo, "filename=") > 0) then
				' place it into our files array
				' While this supports more than one file uploaded at a time
				' we only consider the single file case in this example
				myRequestFiles( fileCount, 0) = getFieldName( varInfo)
				myRequestFiles( fileCount, 1) = varValue
				myRequestFiles( fileCount, 2) = getFileName( varInfo)
				myRequestFiles( fileCount, 3) = getFileType( varInfo)
				fileCount = fileCount + 1
			else
				' it's a regular field
				myRequest.add getFieldName( varInfo), varValue
			end if
		end if
	next
else
	errMsg = "Wrong encoding type!"
end if 
end function

function GetName
' Use the file name that came with the file
' at this point, you need to determine what sort of client sent the file
	' Mac's only send the file name, with no path information, while Windows
	' clients send the entire path of the file that was selected
	browserType = UCase( Request.ServerVariables( "HTTP_USER_AGENT"))
	if (inStr(browserType, "WIN") > 0) then
		' it's Windows... yank the filename off the end!
		sPos = inStrRev( myRequestFiles( 0, 2), "\")
		fName = mid( myRequestFiles( 0, 2), sPos + 1)
	end if
	if (inStr(browserType, "MAC") > 0) then
		' it's a Mac. Simple.
		' Of course, Mac file names can contain characters that are 
		' illegal under Windows, so you need to look out for that!
		fName = myRequestFiles(0, 2)
	end if
	
	GetName	= fName
end function


' save the actual posted file
function SaveFile( sFilePath, sFileName )
' if you are supporting more than one file, just turn this into a loop!
set lf = server.createObject( "Scripting.FileSystemObject")

'if is the "original" name
if len(sFileName) <= 0 then
	fName	= GetName
else
	fName	= sFileName
end if


'if is the "original" path
if len(sFilePath) <= 0 then
	' Use the file path that came with the file
	
	' If your upload path is different, set that here
	filePath = "./" & fName
	savePath = server.mapPath( filePath)
	
else
	' use the user-specified file path instead
	' If your upload path is different, set that here
	'filePath = "./" & myRequest("userSpecifiedName")
	filePath = sFilePath & fName
	savePath = filePath
end if



'response.write "savePath=" 
'response.write savePath 

set saveFile = lf.createtextfile(savePath, true)
saveFile.write( myRequestFiles(0, 1))
saveFile.close

end function

%>

⌨️ 快捷键说明

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