webForumDet fria alternativet

Upload?

ASP

10 svar · 440 visningar · startad av robincs

Medlem sedan nov. 200124 inlägg
Frågan#1

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

------------------

da great world of pisces - soon at http://robin.rocas.net !

Medlem sedan mars 20002 836 inlägg
#2

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

------------------
'## -- second place is the first looser -- ##'

[Redigerat av PatrikB den 03 dec 2001]

Medlem sedan apr. 2000169 inlägg
#3

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!

------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>

Medlem sedan nov. 200124 inlägg
#4

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 :)**

Medlem sedan apr. 2002255 inlägg
#5

Har du lyckats?

Medlem sedan nov. 200124 inlägg
#6

Njae

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

Medlem sedan jan. 2002286 inlägg
#7

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.

Medlem sedan mars 20015 287 inlägg
#8

Å 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

Medlem sedan jan. 2002286 inlägg
#9

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

Medlem sedan mars 20015 287 inlägg
#10

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

Medlem sedan jan. 2002286 inlägg
#11

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

265 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)