webForumDet fria alternativet

Upload?

10 svar · 440 visningar · startad av robincs

robincsMedlem sedan nov. 200124 inlägg
#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 !

PatrikBMedlem 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]

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

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

Poppe25Medlem sedan apr. 2002255 inlägg
#5

Har du lyckats?

robincsMedlem 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*

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

solbulleMedlem 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

fundrusseMedlem sedan jan. 2002286 inlägg
#9

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

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

fundrusseMedlem sedan jan. 2002286 inlägg
#11

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

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