Avatar billede oyderke Nybegynder
23. september 2004 - 22:15 Der er 10 kommentarer og
1 løsning

upload og sql

Hej

Jeg har en side hvor jeg skal bruge aspuload til at uploade en fil og samtidig submitte noget data fra nogle textboxes.

Hvorfor lader det sig ikke gøre?

Mvh
oyderke
Avatar billede oyderke Nybegynder
23. september 2004 - 22:17 #1
dataen skal forresten gemmes i en db med sql
Avatar billede eagleeye Praktikant
23. september 2004 - 22:17 #2
Du kan havde alle de form felter du vil samme med fil upload når du bruger ASPupload. Du skal bare bruge nanvet på upload objectet når du henter form data:
upload.form("xxx") og ikke rewquest.form("xxx")
Avatar billede eagleeye Praktikant
23. september 2004 - 22:27 #3
Eks, 1 fil og 2 input felter:


<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
 
  'ret denne hvor filen skal gemmes:
  str = "/images/"
  Count = Upload.Save (server.mappath(sti))
 
  if Count>0 then
    set file1=Upload.Files("file1")
  end if
 
  navn = Upload.form("navn")
  email = Upload.form("email")

  Set conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb") & "; UID=Administrator; PWD="
  conn.open DSN

  sql = "insert into tabelnavn (billede, navn, email) values ('" & sti & file1.name & "', "
  sql=sql & "'" & navn & "', "
  sql=sql & "'" & email & "', "
  sql=sql & ")"
  Conn.Execute(sql)
  Conn.Close
  set conn=nothing
  set upload=nothing
 
Response.write "Filen uploaded og data gemt i databasen"
end if
%>
<html>
<head></head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST" ENCTYPE="multipart/form-data">
<br>Navn: <input type="text" name="navn">
<br>Email: <input type="text" name="email">
<br>Fil: <input type="file" name="file1">
<br><input type="submit" name="upload" value="upload">
</form>
</body>
</html>
Avatar billede oyderke Nybegynder
23. september 2004 - 22:28 #4
Hvad så hvis jeg har noget validering som gør at indtaste-siden bliver reloaded hvis det forkerte er indtastet?
Avatar billede eagleeye Praktikant
23. september 2004 - 22:34 #5
Man bliver nød til at kalde .Save før det virker så kan man skrive det lidt om:



<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Count = Upload.Save

  'henter form input
  navn = Upload.form("navn")
  email = Upload.form("email")
 
  'valider form input her
  if navn = "admin" then response.redirect "fejlside.asp"



  'Gem filen ret denne hvor filen skal gemmes:
  sti = "/images/"
  filnavn=""
  for each file in upload.files
    file.SaveAs Server.Mappath(sti & file.name)
    filnavn = sti & file.name
  next

  'Gem i databasen
  Set conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb") & "; UID=Administrator; PWD="
  conn.open DSN

  sql = "insert into tabelnavn (billede, navn, email) values ('" & filnavn & "', "
  sql=sql & "'" & navn & "', "
  sql=sql & "'" & email & "', "
  sql=sql & ")"
  Conn.Execute(sql)
  Conn.Close
  set conn=nothing
  set upload=nothing
 
Response.write "Filen uploaded og data gemt i databasen"
end if
%>
Avatar billede oyderke Nybegynder
23. september 2004 - 22:43 #6
Jeg bruger dette. Den gemmer filen men gemmer ikke i databasen. Min textbox hedder TxtNavn.
------------------
Dim objUpload
Set objUpload = Server.CreateObject("Persits.Upload")
On Error Resume Next
Dim strUploadPath
strUploadPath = "Dokumenter/"
objUpload.Save(Server.MapPath(strUploadPath))

Set DBConn = Server.CreateObject("ADODB.Connection")
DBConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\Inetpub\Dh\Data.mdb"
    SQL =     "INSERT INTO Test " &_
            "VALUES ('" & objUpload.Form("TxtNavn") & "')"
    DBConn.Execute(SQL)
DBConn.close
Set DBConn = Nothing

Set objUpload = Nothing
Avatar billede eagleeye Praktikant
23. september 2004 - 22:45 #7
Prøv at udkommenter linjen: On Error Resume Next
'On Error Resume Next

Så skulle du få en fejl hvis der kommer en fejl på siden.

Men prøv at angive det kolonnenavn teskten skal lægges i:
SQL =    "INSERT INTO Test " &_

Eks:
SQL =    "INSERT INTO Test (navn) " &_
Avatar billede oyderke Nybegynder
23. september 2004 - 23:03 #8
Kan det være at forskellen er om jeg putter: enctype="multipart/form-data" i <form>?
for den kan ikke uploade hvis den ikke er der, og den kan ikke gemme i db hvis den er der..
Avatar billede eagleeye Praktikant
23. september 2004 - 23:08 #9
Ja det kan gøre en forskel.
enctype="multipart/form-data  skal være i <form> tagen for det virker.
Avatar billede oyderke Nybegynder
23. september 2004 - 23:21 #10
Skidegodt så virker det. Mange tak for hjælpen. Svar lige for point
Avatar billede eagleeye Praktikant
23. september 2004 - 23:22 #11
Ok her et svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester