Avatar billede jps6kb Novice
08. juli 2005 - 08:41 Der er 25 kommentarer og
1 løsning

Problemer med script til upload

Hej,

Jeg har vist lavet noget forkert.
JEg havde et script som uploadede billeder til en Access database.

Jeg har nu prøvet at smide et textarea med i den ombæring, men jeg får en :

Persits.Upload.1 error '800a0001'

Unspecified error

/int/datablog.asp, line 17


Min asp ser således ud:

<%@LANGUAGE="VBScript"%>
<!--#include file="secure.inc"-->
<!--#include file="connect.asp"-->
<!--#include file="formmail.asp"-->
<%
strBesked = Request.Form("tekst")
strBesked = Replace(strBesked, "'", "''")
%>
<!--#include file="smiley.inc"-->
<%


' UPLOAD IMAGE SCRIPTS START
Set Upload = Server.CreateObject("Persits.Upload")

' Capture files
Upload.Save Server.Mappath("upload")

' Obtain file object
Set File = Upload.Files("FILE1")

If Not File Is Nothing Then
  ' Build ODBC connection string
  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data.mdb")



  ' Build SQL INSERT statement
  SQL = "INSERT INTO Image(image_blob, filename, description, filesize) VALUES(?, '"
  SQL = SQL & File.Filename & "', '"
  SQL = SQL & Replace(Upload.Form("DESCR"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"

  ' Save to database
  File.ToDatabase Connect, SQL
End if

' UPLOAD IMAGE SCRIPT SLUT

dato = Date()
tid = Time()
sql = "insert into blog(navn, dato, tid, billede, tekst, public, gruppe) values('"&session("thisUser")&"', '" & dato & "', '" & tid & "', 'none', '"&strBesked&"', 0, '"&session("thisGroup")&"')"
Myconn.execute(sql)

Response.redirect("myblog.asp")
%>


Inden jeg smed upload scriptet ind, virkede begge dele.. altså, hver for sig.
Avatar billede goose Nybegynder
08. juli 2005 - 08:48 #1
Hvis det er en tekst fra en formular du uploader sammen med dit billede, så skal du bruge upload.form, altså:

strBesked = upload.Form("tekst")

Derudover skal du nok have den sat ind efter du har defineret upload, altså efter:

Set Upload = Server.CreateObject("Persits.Upload")


/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 09:05 #2
Yessir.. det kører bare :D Smid et svar.

Tænkte på.. når jeg nu gemmer billedet først i [Image] tabellen, kan jeg så ikke gemme id i en variabel? For ellers risikerer jeg at der kommer to billeder med samme navn som jeg ikke kan adskille?
Avatar billede goose Nybegynder
08. juli 2005 - 09:11 #3
Du kan jo indsætte følgende:

Upload.OverwriteFiles = False ' Generate unique names

lige efter:

Set Upload = Server.CreateObject("Persits.Upload")

- så vil du du ikke få to billeder med samme navn.

/Goose
Avatar billede goose Nybegynder
08. juli 2005 - 09:13 #4
Øhh, gemmer du dine billeder direkte i databasen ?

/Goose
Avatar billede goose Nybegynder
08. juli 2005 - 09:14 #5
Glem det, du gemmer i mappen upload kan jeg se nu, så du kan godt bruge den med overwrite.

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 09:16 #6
Ja, men jeg mente, at jeg i en anden tabel skal lave en henvisning til [Image] tabellen. Jeg indsætter tekstfeltet i [Blog] lige bagefter, og der ville jeg kunne se det smarte i at kunne indsætte id fra [Image] i stedet for Filename. Kan man ikke det?
Avatar billede goose Nybegynder
08. juli 2005 - 09:22 #7
Joe, du kan jo blot hente det id nummer der lige er oprettet da du indsatte billedet.
Hvis indsætter nedenstående lige efter du har indsat dit billede i databasen:

SQLnew = "SELECT @@IDENTITY as NytID FROM image"
set rsIdentity = conn.execute(SQLnew)
newid = rsIdentity("NytID")
rsIdentity.close
set rsIdentity = nothing

- så har du id nummeret liggende i en variabel der hedder newid og det id nummer kan du så indsætte i dit næste insert i blog tabellen

/Goose
Avatar billede goose Nybegynder
08. juli 2005 - 09:23 #8
du skal nok ligge rette ovenstående til din egen connect string kan jeg se.

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 09:25 #9
Det giver det her:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/int/datablog.asp, line 48


Scriptet ser således ud nu:



<%@LANGUAGE="VBScript"%>
<!--#include file="secure.inc"-->
<!--#include file="connect.asp"-->
<!--#include file="formmail.asp"-->
<!--#include file="smiley.inc"-->
<%


' UPLOAD IMAGE SCRIPTS START
Set Upload = Server.CreateObject("Persits.Upload")

' Capture files
Upload.Save Server.Mappath("upload")

' Obtain file object
Set File = Upload.Files("FILE1")

If Not File Is Nothing Then
  ' Build ODBC connection string
  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data.mdb")

  ' Build SQL INSERT statement
  SQL = "INSERT INTO Image(image_blob, filename, description, filesize) VALUES(?, '"
  SQL = SQL & filen & "', '"
  SQL = SQL & Replace(Upload.Form("DESCR"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"

  ' Save to database
  File.ToDatabase Connect, SQL

End if

' UPLOAD IMAGE SCRIPT SLUT

SQLnew = "SELECT @@IDENTITY as NytID FROM [Image]"
set rsIdentity = MyConn.execute(SQLnew)
newid = rsIdentity("NytID")
rsIdentity.close
set rsIdentity = nothing


dato = Date()
tid = Time()
strBesked = Upload.Form("tekst")
strBesked = Replace(strBesked, "'", "''")

sql = "insert into blog(navn, dato, tid, billede, tekst, public, gruppe) values('"&session("thisUser")&"', '" & dato & "', '" & tid & "', newid, '"&strBesked&"', 0, '"&session("thisGroup")&"')"
Myconn.execute(sql)

Response.redirect("myblog.asp")
%>
Avatar billede jps6kb Novice
08. juli 2005 - 09:28 #10
Hov.. manglede ' om newId... jeg siger tusind tak :)
Avatar billede goose Nybegynder
08. juli 2005 - 09:29 #11
Det var så lidt og tak for point :o)

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 09:42 #12
Jeg var faktisk lidt for hurtig. Håber du gider hjælpe mig lidt mere..

Den lægger en streng med "newid" ned i db'en i stedet for selve id .. ?
Avatar billede goose Nybegynder
08. juli 2005 - 09:45 #13
Nu ved jeg ikke hvordan din insert nu ser ud, men den burde ligne:

sql = "insert into blog(navn, dato, tid, billede, tekst, public, gruppe) values('"&session("thisUser")&"', '" & dato & "', '" & tid & "',"& newid &", '"&strBesked&"', 0, '"&session("thisGroup")&"')"
Myconn.execute(sql)

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 10:00 #14
Ja, nu kommer der godt nok et tal, men det er altid nul.
Avatar billede jps6kb Novice
08. juli 2005 - 10:16 #15
Du får lige hele scriptet igen.. jeg har også prøvet uden

Else
newid = 0

Men så kager den hvis jeg ikke smider et billede med ;)





<%@LANGUAGE="VBScript"%>
<!--#include file="secure.inc"-->
<!--#include file="connect.asp"-->
<!--#include file="smiley.inc"-->
<%


' UPLOAD IMAGE SCRIPTS START
Set Upload = Server.CreateObject("Persits.Upload")

' Capture files
Upload.Save Server.Mappath("upload")

' Obtain file object
Set File = Upload.Files("FILE1")

If Not File Is Nothing Then
  ' Build ODBC connection string
  Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data.mdb")

  ' Build SQL INSERT statement
  SQL = "INSERT INTO Image(image_blob, filename, description, filesize) VALUES(?, '"
  SQL = SQL & filen & "', '"
  SQL = SQL & Replace(Upload.Form("DESCR"), "'", "''") & "', "
  SQL = SQL & File.Size & ")"

  ' Save to database
  File.ToDatabase Connect, SQL

  SQLnew = "SELECT @@IDENTITY as NytID FROM [Image]"
  set rsIdentity = MyConn.execute(SQLnew)
  newid = rsIdentity("NytID")
  rsIdentity.close
  set rsIdentity = nothing
Else
  newid = 0

End if

' UPLOAD IMAGE SCRIPT SLUT



dato = Date()
tid = Time()
strBesked = Upload.Form("tekst")
strBesked = Replace(strBesked, "'", "''")


sql = "insert into blog(navn, dato, tid, billede, tekst, public, gruppe) values('"&session("thisUser")&"', '" & dato &

"', '" & tid & "',"& newid &", '"&strBesked&"', 0, '"&session("thisGroup")&"')"
Myconn.execute(sql)
%>


<%
Response.redirect("myblog.asp")
%>
Avatar billede goose Nybegynder
08. juli 2005 - 10:27 #16
Har du et felt i din image tabel der bruger autoincrement ?

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 10:31 #17
Ja, det er 'id' -  Autonum.
Avatar billede jps6kb Novice
08. juli 2005 - 10:48 #18
Ellers.. kan man ikke hive det største id ud af tabellen?
Jeg har prøvet med select max(id), men kan vist ikke formatere det rigtigt..
Avatar billede goose Nybegynder
08. juli 2005 - 10:59 #19
Hmmmm, det forstår jeg ikke, jeg bruger det selv uden problemer .....

/Goose
Avatar billede goose Nybegynder
08. juli 2005 - 11:01 #20
har du prøvet uden klammerne omkring [image] ?

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 11:03 #21
Det bliver stadig bare nul..
Avatar billede jps6kb Novice
08. juli 2005 - 11:03 #22
Gider du ikke prøve at lave en:

newid = (select max(id)... til mig?

Jeg kan ikke rigtig få den til at æde min.. for det er vel det samme den gør, et eller andet sted?
Avatar billede goose Nybegynder
08. juli 2005 - 11:07 #23
et må være noget i stil med:

Set RS = Conn.Execute("SELECT max(id) from Image")
newid = RS(0)

/Goose
Avatar billede goose Nybegynder
08. juli 2005 - 11:08 #24
Rettelse:

Set RS = MyConn.Execute("SELECT max(id) from Image")
newid = RS(0)

/Goose
Avatar billede jps6kb Novice
08. juli 2005 - 11:09 #25
Yes! Så var den der.. mange tak :D
Avatar billede goose Nybegynder
08. juli 2005 - 11:11 #26
Det var så lidt, jeg forstår bare stadigvæk ikke hvorfor den første ikke virkede, men sådan er der jo så meget :o)

/Goose
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