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.
13 svar · 333 visningar · startad av clacke
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?
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.
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>
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.
Därav min redigering, jag trodde inte att du skulle hinna se det
Kodtaggen skrivs [kod] inte <kod>
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
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")
Lars- jag får ett felmeddelande:
Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
/koder/uploaders/min_pureupload/uploadform2.asp, line 60
End If
Måste man inte avsluta en if sats?, prövade men fíck fel:
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''
Funkar bra nu, den laddar upp bilderna och lägger in namnen idatabasen.
Men den lägger in 2st likadana rader?
Lars- Varför lägger den i 2 likadana rader i databasen, loopen
går ju utanför sql satsen?
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?
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