webForumDet fria alternativet

Ogiltigt proceduranrop eller argument.: 'Mid'

ASP

28 svar · 1 290 visningar · startad av mikul · sida 2 av 2

Frågan, av mikul

hej. jag får detta felmedelandet: Körningsfel i Microsoft VBScript fel '800a0005' Ogiltigt proceduranrop eller argument.: 'Mid' /asp/UploadScript2.asp, rad 15 när jag kör följande kod: '##### Mickes stuff ##### Function namn(str) Dim pos, fromend str = Trim(str) pos = inStrRev(str,"/") fromend = len(str) - pos namn = Mid(str,fromend) End Function Sub add(Fil) Dim Conn

Läs frågan i sin helhet →
Medlem sedan dec. 200012 464 inlägg
#21

Du kan ju titta på mitt första inlägg där jag gjorde lite ändringar i funktionen.

Annars så kan du ju lägga in lite test-utskrifter så att du kan se värdet på inparametrar och de lokala variablerna.

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20013 824 inlägg
#22

Nu fick jag värdet "FILE1"
det är så formuläret heter....

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#23

Jag har ingen erfarenhet av den upload du använder.
Exemplet med for each hittade jag här
http://www.verio.com/support/view_article.cfm?doc_id=561

så du kanske kan titta mer där.

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20013 824 inlägg
#24

jag ska kolla där...
men tack så otroligt mycket för hjälpen!
den är värkligen uppskattad...

/ Mikul

Medlem sedan aug. 20013 824 inlägg
#25

så här blev det färdiga resultatet:

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save("C:\Inetpub\wwwroot\asp\kas\reportage\images")
	
	Function namn(str)
		if isnull(str) or len(str) = 0 then 
			name = "" 
			return
		end if
		Dim pos
		str = Trim(str)
		pos = inStrRev(str,"\")
		namn = Right(str,Len(str)-pos)
	End Function

	Sub add(Fil)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		sql = "Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')"
		Conn.Execute (sql)
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	For Each File in Upload.Files
		add(namn(File.Path))
	Next 

	Response.write Count & " files uploaded."
If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>

jag hade först och främst satt ett / i stället för \ i funktionen...
sen fick jag hjälp med att hitta den rätta For-Each satsen...

men ett sort tack ska du ha Lars, och även Jörgen.

/ Mikul

Medlem sedan juni 20019 519 inlägg
#26

Jag behöver en Upploder för bilder.... fungera denna eller är det inte hela kodeN?

------------------
//voigtan
:: voigtan.org

"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck

Medlem sedan aug. 20013 824 inlägg
#27

tyvärr är inte det hela koden...
du behöver dock en komponent installerad på servern för att kunna använda denna kod...
om du inte vill installera en komponent så finns det andra script för detta.
exempelvis detta som laddar upp filerna ifråga till mappen "filer" som du lägger i samma mapp som asp dokumentet ligger i...


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

	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=""filer/" & 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=""Ladda upp""></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
%>

fast jag skulle starkt råda dig till att installera en komponent...
kontakta mig på min mail så kan jag skicka den åt dig + hela koden som jag använder mig av för att ladda upp filer och registrera dem i en databas...

/ Mikul

Medlem sedan aug. 20013 824 inlägg
#28

tyvärr är inte det hela koden...
du behöver dock en komponent installerad på servern för att kunna använda denna kod...
om du inte vill installera en komponent så finns det andra script för detta.
exempelvis detta som laddar upp filerna ifråga till mappen "filer" som du lägger i samma mapp som asp dokumentet ligger i...


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

	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=""filer/" & 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=""Ladda upp""></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
%>

fast jag skulle starkt råda dig till att installera en komponent...
kontakta mig på min mail så kan jag skicka den åt dig + hela koden som jag använder mig av för att ladda upp filer och registrera dem i en databas...

/ Mikul

------------------
vad är det för fel mad att vara lat?, tänk om det blev krig och ingen kom dit.

Medlem sedan aug. 20013 824 inlägg
#29

varför kom det två gånger?
konstigt...
/ Mikul

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