webForumDet fria alternativet

Det går inte att använda Request.Form?

ASP

4 svar · 185 visningar · startad av mikul

Medlem sedan aug. 20013 824 inlägg
Frågan#1

hej jag försöker kopla ihop ett upload system med en databas, asså så alla filer jag laddar up sparas i databasen också...
men det funkar inte...
får detta felmedelande...

Request-objekt fel 'ASP 0207 : 80004005'
Det går inte att använda Request.Form
/asp/UploadScript2.asp, rad 16
Det går inte att använda samlingen Request.Form efter att BinaryRead har anropats.
jag kör följande kod:

<HTML>
<BODY BGCOLOR="#FFFFFF">

<%
	Set Upload = Server.CreateObject("Persits.Upload.1")
	Count = Upload.Save("C:\Inetpub\wwwroot\asp")
%>

<% = Count %> files uploaded.

<%
'##### Mickes stuff #####
	
	Sub namn()
		Dim str, pos, fromend
		str = Trim(Request.form("upload"))
		pos = inStrRev(str,"/")
		fromend = len(str) - pos
		str = Mid(str,fromend)
	End Sub

	Sub add(str)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		Conn.Execute ("Insert into bilder(bild,rubrik) Values('" & str & "','rubrik')")
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	Call namn()
	Call add(str)
	
'##### Mickes stuff slutar #####

	If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>
</BODY>
</HTML>

jag provade även med:

<HTML>
<BODY BGCOLOR="#FFFFFF">
<%
'##### Mickes stuff #####
	
	Sub namn()
		Dim str, pos, fromend
		str = Trim(Request.form("upload"))
		pos = inStrRev(str,"/")
		fromend = len(str) - pos
		str = Mid(str,fromend)
	End Sub

	Sub add(str)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		Conn.Execute ("Insert into bilder(bild,rubrik) Values('" & str & "','rubrik')")
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	Call namn()
	Call add(str)
	
'##### Mickes stuff slutar #####
%>
<%
	Set Upload = Server.CreateObject("Persits.Upload.1")
	Count = Upload.Save("C:\Inetpub\wwwroot\asp")
%>

<% = Count %> files uploaded.

<%
	If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>
</BODY>
</HTML>

men fick det här felmesset:
Körningsfel i Microsoft VBScript fel '800a0005'

Ogiltigt proceduranrop eller argument.: 'Mid'

/asp/UploadScript2.asp, rad 11

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#2

Nej, om du använder någon upload-komponent så skapar den en egen samling med de objekt som fanns i request.form

Byt request.form till upload.form

OT

Det här är inte bra kod.

Sub namn()
Dim str, pos, fromend
str = Trim(Request.form("upload"))
pos = inStrRev(str,"/")
fromend = len(str) - pos
str = Mid(str,fromend)
End Sub

använd parametrar istället för globala variabler.

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

Medlem sedan aug. 20013 824 inlägg
#3

nu hängde jag inte med riktigt.
vad menar du med "använd parametrar istället för globala variabler."???
/ Mikul

Medlem sedan dec. 200012 464 inlägg
#4

En anledning till att man skriver en Sub är man vill kunna återutnyttja kod.
Som du har skrivit koden så fungerar det enbart om det finns ett fält som heter upload. (I och för sig så fungerar det inte då heller då str bara finns lokalt i sub.)

Jag skulle nog skriva den som en funktion istället

function namn(str)
Dim  pos, fromend
str = Trim(str)
pos = inStrRev(str,"/")
fromend = len(str) - pos
namn = Mid(str,fromend)
End function

och sedan kan du t.ex. använda

filnamn = namn(upload.form("upload"))

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

Medlem sedan aug. 20013 824 inlägg
#5

ok...
tack så jätte mycket för hjälpen! :D
nu har jag lärt mig lite mer om funktioner och subbar, Tack!

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