webForumDet fria alternativet

upload utan komponenter

8 svar · 355 visningar · startad av voigtann1

voigtann1Medlem sedan juni 20019 519 inlägg
#1

Har försökt att pilla på den som finns här på wF men jag tycks inte hitta några saker jag skulle vilja ha:

  1. att man bara kan upploada 60 kb
  2. kan bara uploada *.cfg,*.zip,*.exe filer

och helst en kod som man inte behöver några komponenter som korsta..

så enkel som möjligt med...

mikulMedlem sedan aug. 20013 824 inlägg
#2

det där med filändelsen är ju inge problem i allafall...
det är ju bara att kolla om sökvägen slutar på nån av de tre bokstäverna...

if lcase(right(upload.form("form"),3)) = "exe" or lcase(right(upload.form("form"),3)) = "zip" or lcase(right(upload.form("form"),3)) = "cfg" Then

'ladda upp

else

' skit i det...

end if

hoppas du fattar hur jag menar..

/ Mikul

BroskanMedlem sedan mars 2000126 inlägg
#3

Filstorlek

Du kan väl köra en funktion för att kolla hur stor filen är innan du drar igång hela processen med någon if sats. Så här kan du plocka ut filstorleken.

Function Filesize(filedir)

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filedir)
size = f.size '# Storleken i bytes
Filesize = size

End Function

//Broskan

voigtann1Medlem sedan juni 20019 519 inlägg
#4

detta låter bra.. men tyvärr har jag ingen bra uppload tycker jag.. jag har så att uploaden ska upploada till ens egna mapp ex:
voigtann1 mappen

jag kör en session mot den men den fattar inte riktigt att sessionen ska ingår i mapath har någon fixat detta??? behöver en kod för en sådan upload

@ndersMedlem sedan juni 200032 969 inlägg
#5

Hur ser din kod ut då?

voigtann1Medlem sedan juni 20019 519 inlägg
#6

<% @EnableSessionState = true %>
<% Option Explicit %>
<% Response.Expires = 0 %>
<%
Dim UPLOAD_PATH
UPLOAD_PATH = Server.MapPath("members/" & lcase(session("user")))

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\>\</td\>\</tr\>"
For Each g_oFile In g_oFolder.Files
	Response.Write "\<tr\>\<td\>\<a href=""members/" & lcase(session("user")) & "/" & g_oFile.Name & """\>" & g_oFile.name & "\</a\>\</td\>\</tr\>"
Next
Response.Write "\<tr\>\<td\>\<hr\>\</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

%>

@ndersMedlem sedan juni 200032 969 inlägg
#7

hur ser variabeln UPLOAD_PATH ut när du skriver ut den?

voigtann1Medlem sedan juni 20019 519 inlägg
#8

hela denna fungera men jag fattar ju inte mycket av den... och jag vet inte hur man får så att man bara kan ha en viss storlek.. det är det jag vill ha.. och en mindre kod =)

@ndersMedlem sedan juni 200032 969 inlägg
#9

OK, jag tänkte försöka svara på din sista fråga. Men, men...

Why fix it if it ain't broken? ;)

Skämt åsido, vill du ha en kortare kod, så blir det till att köra med en uploadkomponent.

Om du kan använda komponenter, kika på ASPSmartUpload. Den har funktioner för att tvinga filändelser, filstorlekar och liknande. Den är gratis och finns på www.aspsmart.com. Även Dundas upload kan vara ett alternativ, jag känner dock inte till den mer än att jag vet att flera här på wF använder den.

Mvh,

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)