webForumDet fria alternativet

max storlek på bild

ASP

4 svar · 327 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

har den applikation för att ladda upp bilder. Men hur gör man för att man bara får ladda upp en bild som är max 15 kb?
Det ska komma upp en alert-ruta då.

<!-- Denna upploadkod kommer från sidan [url]www.joakimweb.com[/url] -->

<% Response.Expires = 0 %>
<%
	Dim UPLOAD_PATH
		UPLOAD_PATH	= Server.MapPath("krypinbild/")

	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>"
	
	
	For Each g_oFile In g_oFolder.Files
		
	Next
	
	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"" style=""Border: 1px solid; font-family: verdana; font-size: 10px""> &nbsp; <input type=""submit"" value=""Ladda upp"" style=""border: #000000 1px solid; font-family: verdana; font-size: 10px""></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))

		SQL = "SELECT * from members WHERE id = "&session("id")&""
		RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic

		RecSet("bild") = "bild_yes"

		RecSet.Update
		RecSet.Close

			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	= "bild"&session("id")&".jpg"
	End Function

%>
Medlem sedan feb. 20001 590 inlägg
#2

Lägg till:

MyByteCount = Request.TotalBytes

I koden där formuläret tas emot.

Sedan

If MybyteCount<=15000 Then

'här är din kod

End If

Observera att Request.TotalBytes är nog lite större än bilden, bla. så skickas övrig formulärdata med. Skicka en bild och skriv ut variabeln, så kan du "trimma" värdet lite uppåt.

/T

Medlem sedan feb. 20011 498 inlägg
#3

Jag förstår inte riktigt vart jag ska sätta in den koden, kan någon visa?

Medlem sedan aug. 2001226 inlägg
#4

överst...

Medlem sedan feb. 20011 498 inlägg
#5

Denna kod

MyByteCount = Request.TotalBytes

förstår jag inte vart jag ska lägga.

274 ms totalt · 4 externa anrop · v20260731065814-full.20824b9f
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
139 ms — ändringar (db)