---
title: "upload utan komponenter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/40126-upload-utan-komponenter"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "voigtann1"
published: "2002-03-22T23:08:39.000Z"
updated: "2002-03-23T13:40:05.000Z"
replies: 8
views: 357
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/40126-upload-utan-komponenter"
---

# upload utan komponenter

## #1 — voigtann1, 2002-03-22T23:08Z

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...

Permalänk: https://www.webforum.nu/p/40126

## #2 — mikul, 2002-03-23T00:56Z

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

Permalänk: https://www.webforum.nu/p/630076

## #3 — Broskan, 2002-03-23T08:17Z

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

Permalänk: https://www.webforum.nu/p/630108

## #4 — voigtann1, 2002-03-23T11:05Z

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

Permalänk: https://www.webforum.nu/p/630138

## #5 — @nders, 2002-03-23T12:16Z

Hur ser din kod ut då?

Permalänk: https://www.webforum.nu/p/630156

## #6 — voigtann1, 2002-03-23T12:41Z

\<%	@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
%\>

Permalänk: https://www.webforum.nu/p/630164

## #7 — @nders, 2002-03-23T13:29Z

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

Permalänk: https://www.webforum.nu/p/630170

## #8 — voigtann1, 2002-03-23T13:32Z

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 =)

Permalänk: https://www.webforum.nu/p/630172

## #9 — @nders, 2002-03-23T13:40Z

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,

Permalänk: https://www.webforum.nu/p/630174

---

Tråden på webben: https://www.webforum.nu/amne/asp/40126-upload-utan-komponenter
