webForumDet fria alternativet

Upload problem

13 svar · 333 visningar · startad av clacke

clackeMedlem sedan feb. 2003237 inlägg
#1

Jag har 2 st file fält på en sida som skickar upp bilder, och detta
funkar som det ska. Men jag vill få in bild namnen i en databas
och försöker att hämta namnen på sida2 vilket inte lyckas.
Jag kan bara hämta in andra file fältets namn.

<kod>
på första sidan dom 2 file fälten:

   \<input type=FILE name="file1" \>
    \<br\>
    \<input type=FILE name="file2" \>

och på sida 2 hämtar jag in info och laddar upp den.

<!-- #include file="upload.asp" -->
<%

' Create the FileUploader
Dim Uploader, File , onpage , thetext , image1, image2,headline, strConn,rs,sql,conn,dat,strFileName,saveto,file1,test,bild1
Set Uploader = New FileUploader

' This starts the upload process
Uploader.Upload()

'******************************************
' Use [FileUploader object].Form to access
' additional form variables submitted with
' the file upload(s). (used below)
'******************************************

' Check if any files were uploaded
If Uploader.Files.Count = 0 Then
	Response.Write "File(s) not uploaded."
Else

' Loop through the uploaded files
For Each File In Uploader.Files.Items

	' Save the file
		File.SaveToDisk Server.MapPath("images")
		
	
	image1 =  File.FileName

Next

End If

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*skriver ut textrutans text
headline =  Uploader.Form("headline") 
'response.write headline 

------------ försöker att skriva ut, men det funkar inte-------
bild1 = Uploader.Form("file1")
response.write bild1&"<br>"

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*skriver ut andra textrutans text
onpage = Uploader.Form("onpage") 
'response.write onpage&"\<br\>"

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*skriver ut bildnamnet
response.write  image1 

'\*\*\*\*\*\*\*\*\*\*\*\*\*öppnar ACCESS databasen när den ligger på servern\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*'
strConn= "DBQ=" & Server.MapPath("nordnet.mdb")& ";Driver={Microsoft Access Driver (\*.mdb)};"
set conn = server.CreateObject("ADODB.Connection")
conn.Open strConn 
dat = date()
		
	'\*\*\*\*\*\*\*\*\*Detta lägger in data i databasen i resp fält\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*'
	sql= "INSERT INTO upload(headline,onpage,image1,image2,datum) VALUES ('"& headline &"','"& onpage &"','"& image1 &"','"& image2 &"',''"& dat &"');"
	conn.Execute (sql)'kör sql-sats
	
	'\*\*\*\*\*\*\*\*\*\*\*stänger databasen\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*'
	conn.close
	set conn=nothing

%>
<html>
<head>

</head>
<body>
</body>
</html></kod>

"image1" skriver ut andra file formuläret
vill att båda bilderna skrivs in på en och samma rad i databasen.
Nu lägger den in texten på 2 rader?
Vad gör jag för fel?

Engine^Medlem sedan dec. 20002 861 inlägg
#2

Det här har knappast med SQL att göra.

Värdet på image1 är givetvis den andra filens namn, eftersom du sätter det i loopen.

Du tilldelar inte variabeln image2 något värde.

clackeMedlem sedan feb. 2003237 inlägg
#3

request.form kan man inte använda med ett upload script får
felmeddelande:
<kod>
Cannot use Request.Form collection after calling BinaryRead.
/koder/uploaders/min_pureupload/uploadform2.asp, line 45
</kod>

@ndersMedlem sedan juni 200026 914 inlägg
#4

clacke skrev:

request.form kan man inte använda med ett upload script får
felmeddelande:
<kod>
Cannot use Request.Form collection after calling BinaryRead.
/koder/uploaders/min_pureupload/uploadform2.asp, line 45
</kod>

Det är riktigt. Det är därför upload-komponenterna har egna metoder för att hämta in formulärdata.

Engine^Medlem sedan dec. 20002 861 inlägg
#5

Därav min redigering, jag trodde inte att du skulle hinna se det ;)

Kodtaggen skrivs &#91kod] inte <kod>

LarsGMedlem sedan dec. 200012 465 inlägg
#6

I din kod så kommer image1 att innehålla det sista filnamnet eftersom det ändras för varje iteration i din for-loop. Image2 får aldrig något värde.

Du måste spara varje filnamn för sig och då är det enklast att använda en array.

dim images(20)
dim files
files = 0
 For Each File In Uploader.Files.Items

' Save the file
File.SaveToDisk Server.MapPath("images")
if files > ubound(images) then redim images(files+20)
images(files) = file.filename
'response.write images(files) & "<br>"
files = files + 1
Next
End If

'******************skriver ut textrutans text
headline = Uploader.Form("headline")
'response.write headline

------------ försöker att skriva ut, men det funkar inte-------
bild1 = Uploader.Form("file1")
response.write bild1&"<br>"

'******************skriver ut andra textrutans text
onpage = Uploader.Form("onpage")
'response.write onpage&"<br>"

'*************öppnar ACCESS databasen när den ligger på servern*****************'
strConn= "DBQ=" & Server.MapPath("nordnet.mdb")& ";Driver={Microsoft Access Driver (*.mdb)};"
set conn = server.CreateObject("ADODB.Connection")
conn.Open strConn
dat = date()

'*********Detta lägger in data i databasen i resp fält*******************'
sql= "INSERT INTO upload(headline,onpage,image1,image2,datum) VALUES ('"& headline &"','"& onpage &"','"& images(0) &"','"& images(1) &"',''"& dat &"');"
conn.Execute (sql)'kör sql-sats

Flyttas från SQL

clackeMedlem sedan feb. 2003237 inlägg
#7

Jag kan ju hämta andra formulär och det funkar med

headline = Uploader.Form("headline")

men varför kan jag inte hämta file fälten på samma sätt med

image1 = Uploader.Form("image1")
image2 = Uploader.Form("image2")

clackeMedlem sedan feb. 2003237 inlägg
#8

Lars- jag får ett felmeddelande:

Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
/koder/uploaders/min_pureupload/uploadform2.asp, line 60
End If
LarsGMedlem sedan dec. 200012 465 inlägg
#9

End if kom med av misstag.

Ta bort den raden.

clackeMedlem sedan feb. 2003237 inlägg
#10

Måste man inte avsluta en if sats?, prövade men fíck fel:

Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''
clackeMedlem sedan feb. 2003237 inlägg
#11

Funkar bra nu, den laddar upp bilderna och lägger in namnen idatabasen.

Men den lägger in 2st likadana rader?

clackeMedlem sedan feb. 2003237 inlägg
#12

Lars- Varför lägger den i 2 likadana rader i databasen, loopen
går ju utanför sql satsen?

LarsGMedlem sedan dec. 200012 465 inlägg
#13

Lars- Varför lägger den i 2 likadana rader i databasen, loopen

Svårt att säga. Är det all kod på sidan? Laddas samma sida 2 gånger?

clackeMedlem sedan feb. 2003237 inlägg
#14

Här är all kod på sidan

<%@ Language=VBScript %>
<%Option Explicit%>
<!-- #include file="upload.asp" -->
<%

'NOTE - YOU MUST HAVE VBSCRIPT v5.0 INSTALLED ON YOUR WEB SERVER
'	   FOR THIS LIBRARY TO FUNCTION CORRECTLY. YOU CAN OBTAIN IT
'	   FREE FROM MICROSOFT WHEN YOU INSTALL INTERNET EXPLORER 5.0
'	   OR LATER.

' Create the FileUploader
Dim Uploader, File , onpage , thetext , image, headline, strConn,rs,sql,conn,dat,strFileName,saveto,file1,test,bild1
Dim image1,image2
Set Uploader = New FileUploader

' This starts the upload process
Uploader.Upload()

'******************************************
' Use [FileUploader object].Form to access 
' additional form variables submitted with
' the file upload(s). (used below)
'******************************************

	
	
		
			dim images(20)
			dim files
			files = 0
			 For Each File In Uploader.Files.Items
			
			' Save the file
			File.SaveToDisk Server.MapPath("images")
			if files > ubound(images) then redim images(files+20)
			images(files) = file.filename
			response.write images(files) & "<br>"
			files = files + 1
			Next
			'End If

			'******************skriver ut textrutans text
		headline = Uploader.Form("headline")
		'response.write headline
		
		'******************skriver ut andra textrutans text
		onpage = Uploader.Form("onpage")
		'response.write onpage&"<br>"
		
		'*************öppnar ACCESS databasen när den ligger på servern*****************'
		strConn= "DBQ=" & Server.MapPath("nordnet.mdb")& ";Driver={Microsoft Access Driver (*.mdb)};"
		set conn = server.CreateObject("ADODB.Connection")
		conn.Open strConn
		dat = date()
		
		'*********Detta lägger in data i databasen i resp fält*******************'
		sql= "INSERT INTO bilar(headline,onpage,image1,image2,datum) VALUES ('"& headline &"','"& onpage &"','"& images(0) &"','"& images(1) &"','"& dat &"');"
		conn.Execute (sql)'kör sql-sats
		
		'***********stänger databasen***************'
		conn.close
		set conn=nothing
	
	
	
	
%>
<html>

<head>

</head>
<body>
</body>
</html>

Mycket tacksam för hjälp

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb