---
title: "Upload?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/12991-upload"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "robincs"
published: "2001-12-03T20:40:00.000Z"
updated: "2002-07-06T15:14:46.000Z"
replies: 10
views: 468
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/12991-upload"
---

# Upload?

## #1 — robincs, 2001-12-03T20:40Z

Hej!
Nån som vet något bra fil-uploadskript?
Jag behöver ett script som:

\* Laddar upp filen i en viss mapp
\* Skriver in filens namn i en databas

MVH
/Robin

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

## #2 — PatrikB, 2001-12-03T22:42Z

oj, oj, oj .... den som söker skall finna ;)

har tagits upp ett flertal ggr.
både med och utan 3:e parts componenter

cya,
PatrikB

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

## #3 — Jacek, 2001-12-04T12:01Z

Tja Robincs!

Jag hittade ett upload system i mina mappar som jag fått tidigare här från webforum.
Till detta upload script behöver man inga komponenter, dvs att scriptet fungerar på vilken server som helst (måste förståss stödja ASP).

```
<%	@EnableSessionState	= False %>
<%	Option Explicit %>
<%	Response.Expires	= 0 %>
<%
	Dim UPLOAD_PATH
		UPLOAD_PATH	= Server.MapPath("files")

	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=""files/" & 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
%>
```

Du måste skapa en mapp som du döper till Files i samma mapp som du lägger denna fil. Koden kan du ta och slänga in i en asp fil som du senare döper till upload.asp.
Hoppas du får det att fungera!

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

## #4 — robincs, 2002-05-03T11:35Z

> *Ursprungligen av Jacek*  
> 
> **Jag hittade ett upload system i mina mappar som jag fått tidigare här från webforum.
> Till detta upload script behöver man inga komponenter, dvs att scriptet fungerar på vilken server som helst (måste förståss stödja ASP).
> 
> 
> \--
> 
> Tack så mycket! Nu ska jag bara försöka få till det som jag vill ha :)**

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

## #5 — Poppe25, 2002-05-03T21:02Z

Har du lyckats?

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

## #6 — robincs, 2002-05-25T01:31Z

Njae

Sciptet fungerar bra, men jag försöker implementera det i mina övriga script och det går inte riktigt lika bra \*sucka\*

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

## #7 — fundrusse, 2002-07-06T12:05Z

När man avnänder denna uploaded.. varför funkar det inte att använda request.form("") då?

För jag har en funktion där man ska kunna skriva in namn och sen välja bild och skicka upp.. allt skall vara i samma formulär.

Jag får bara felet 
Det går inte att anropa BinaryRead efter att samlingen Request.Form har använts.

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

## #8 — solbulle, 2002-07-06T12:38Z

Å detta har också diskuterats massor av gånger, här bör du nog hitta alla svar på¨eventuella frågor: <http://www.webforum.nu/showthread.php?s=&threadid=45212>

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

## #9 — fundrusse, 2002-07-06T12:46Z

Nae forumet stannade på samma fråga som jag har.. hehe

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

## #10 — solbulle, 2002-07-06T13:49Z

Kika på sidan två där: <http://www.webforum.nu/showthread.php?s=&postid=380900#post380900>

tror nog att denna del i ditt script är motsvarigheten:

fcontent	= g_oUpload("upload").Item("content")

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

## #11 — fundrusse, 2002-07-06T15:14Z

Nae det lösta sig här nu..

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

---

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