webForumDet fria alternativet

uploadscript.

0 svar · 124 visningar · startad av maniac

maniacMedlem sedan feb. 200150 inlägg
#1

jag använder uploadscriptet som jag hittade på wfscript...men det är en sak som jag vill ändra. jag vill att filnamet ska bytas ut till session("username").filändelse. såhär ser koden ut:

<%
	Dim UPLOAD_PATH
		UPLOAD_PATH	= Server.MapPath("content/images/members")

	Dim g_oFso, g_oFolder, g_oFile
		Set g_oFso	= Server.CreateObject("Scripting.FileSystemObject")
		Set g_oFolder	= g_oFso.getFolder(UPLOAD_PATH)

	If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
		Dim g_oUpload
			Set g_oUpload	= get_upload_files()

		Dim fpos, fcontent
			fcontent	= g_oUpload("upload").Item("content")
		Set g_oFile	= g_oFso.CreateTextFile(UPLOAD_PATH & "\" & extract_filename(g_oUpload("upload").Item("filename")))
		For fpos = 1 to LenB(fcontent)
			g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
		Next
		g_oFile.Close: Set g_oFile	= Nothing

		Response.Redirect Request.ServerVariables("SCRIPT_NAME")
	End If

	Response.Write "<html><body><table>"
	Response.Write "<tr><td><hr size=""1"" noshade></td></tr>"
	Response.Write "<tr><td><span class=""text""><b>Current pictures:</b></span></td></tr>"
	For Each g_oFile In g_oFolder.Files
		Response.Write "<tr><td><span class=""text"">" & g_oFile.name & "</span></td></tr>"
	Next
	Response.Write "<tr><td><hr size=""1"" noshade></td></tr>"
	Response.Write "<tr><td align=""right""><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
	Response.Write "<input type=""file"" name=""upload""> &nbsp; <input type=""submit"" value=""upload""></td></tr>"
	Response.Write "</table></body></html>"

%>
<%
	Function get_upload_files()
		Dim	upload_object, request_binaries
		Dim position_start, position_end
		Dim boundary, boundary_pos

		Set upload_object	= Server.CreateObject("Scripting.Dictionary")
		request_binaries	= Request.BinaryRead(Request.TotalBytes)
		position_start		= 1
		position_end		= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
		boundary			= MidB(request_binaries, position_start, (position_end - position_start))
		boundary_pos		= InstrB(1, request_binaries, boundary)

		Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
			If Not(Response.IsClientConnected) Then Response.End

			Dim name, pos_file

			position_start	= (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
			position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))

			name			= get_string(MidB(request_binaries, position_start, (position_end - position_start)))
			pos_file		= InstrB(boundary_pos, request_binaries, get_byte_string("filename="))

			If  ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
				upload_object.Add name, Server.CreateObject("Scripting.Dictionary")

				position_start	= (pos_file + 10)
				position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))
				upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

				position_start	= (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
				position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
				upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

				position_start	= (position_end + 4)
				position_end	= InstrB(position_start, request_binaries, boundary) - 2
				upload_object.item(name).Add "size", ((position_end - position_start))
				upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
			End If
			boundary_pos	= InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
		Loop

		Set get_upload_files = upload_object
	End Function

	Function get_byte_string(str)
		Dim cnt
		For cnt = 1 to Len(str)
			get_byte_string	= get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
		Next
	End Function

	Function get_string(str)
		Dim cnt
		For cnt = 1 to LenB(str)
			get_string	= get_string & chr(AscB(MidB(str, cnt, 1)))
		Next
	End Function

	Function extract_filename(filename)
		extract_filename	= Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
	End Function
%>
Genererad på 365 ms · cache AV · v20260730165559-full.f96bc7eb