Avatar billede webnoob Nybegynder
20. marts 2006 - 20:31 Der er 19 kommentarer og
1 løsning

upload billede med aspsmartupload

Jeg har et lille problem er at uploade et billede.

kig på mit script og se om du kan komme med en løsning.

varenummer=Request.Form("varenummer")
model=Request.Form("model")
pris=Request.Form("pris")
tilbudspris=Request.Form("tilbudspris")
beskrivelse=Request.Form("beskrivelse")
billede=Request.Form("billede")
synlig=Request.Form("synlig")
undergruppeID=Request.Form("undergruppe2")
storrelse=Request.Form("storrelse")
antal=Request.Form("antal")

sql = "INSERT INTO shop_varer(varenummer,model,pris,tilbudspris,beskrivelse,billede,synlig) VALUES('"&varenummer&"','"&model&"',convert(decimal(10,2), '"&pris&"'),convert(decimal(10,2), '"&tilbudspris&"'),'"&beskrivelse&"','"&billede&"','"&synlig&"')"
set record = rs.Execute(sql)

SQL = "SELECT @@IDENTITY as ID"
set record = rs.execute(sql)
vareID = record("ID")

arrID = split(undergruppeID, ", ")
for t = 0 to ubound(arrID)
    sql = "INSERT INTO shop_vare_str_ref(vareID,undergruppeID) VALUES('"&vareID&"','"&arrID(t)&"')"
    set record = rs.Execute(sql)
next

arrstr = split(storrelse, ", ")
for t = 0 to ubound(arrstr)
next
arrantal = split(antal, ", ")
for t = 0 to ubound(arrantal)
    sql = "INSERT INTO shop_storrelse(vareID,storrelse,antal) VALUES('"&vareID&"','"&arrstr(t)&"','"&arrantal(t)&"')"
    Set record = rs.Execute(sql)
next

Response.Redirect("index.asp?side=shoppen")

Den fejl jeg får kommer her:

Request object error 'ASP 0207 : 80004005'

Cannot use Request.Form

/add-adjust_vare_save.asp, line 25

Cannot use Request.Form collection after calling BinaryRead.
Avatar billede webnoob Nybegynder
20. marts 2006 - 20:32 #1
hovsa fik sørme ikke det hele med, ups, prøver lige igen

Dim mySmartUpload
Dim intCount
Dim arrID
Dim arrstr
Dim arrantal

    'Opret Object
    '***************
    Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
   
    'Upload
    '*********
    mySmartUpload.Upload
   
    'Gem filen med originalt navn med en virtuel sti eller på en web server
    '*************************************************************************
    intCount = mySmartUpload.Save("/billeder/jpg")
    'intCount = mySmartUpload.Save("/aspSmartUpload/Upload")
    'sample with a physical path
    'intCount = mySmartUpload.Save("c:\temp\")

varenummer=Request.Form("varenummer")
model=Request.Form("model")
pris=Request.Form("pris")
tilbudspris=Request.Form("tilbudspris")
beskrivelse=Request.Form("beskrivelse")
billede=Request.Form("billede")
synlig=Request.Form("synlig")
undergruppeID=Request.Form("undergruppe2")
storrelse=Request.Form("storrelse")
antal=Request.Form("antal")

sql = "INSERT INTO shop_varer(varenummer,model,pris,tilbudspris,beskrivelse,billede,synlig) VALUES('"&varenummer&"','"&model&"',convert(decimal(10,2), '"&pris&"'),convert(decimal(10,2), '"&tilbudspris&"'),'"&beskrivelse&"','"&billede&"','"&synlig&"')"
set record = rs.Execute(sql)

SQL = "SELECT @@IDENTITY as ID"
set record = rs.execute(sql)
vareID = record("ID")

arrID = split(undergruppeID, ", ")
for t = 0 to ubound(arrID)
    sql = "INSERT INTO shop_vare_str_ref(vareID,undergruppeID) VALUES('"&vareID&"','"&arrID(t)&"')"
    set record = rs.Execute(sql)
next

arrstr = split(storrelse, ", ")
for t = 0 to ubound(arrstr)
next
arrantal = split(antal, ", ")
for t = 0 to ubound(arrantal)
    sql = "INSERT INTO shop_storrelse(vareID,storrelse,antal) VALUES('"&vareID&"','"&arrstr(t)&"','"&arrantal(t)&"')"
    Set record = rs.Execute(sql)
next

Response.Redirect("index.asp?side=shoppen")
Avatar billede eagleeye Praktikant
20. marts 2006 - 20:38 #2
Når du bruger upload kan man ikke bruge request.form. Der skal man bruge upload komponentens form collection som virker på samme måde som request.form. Det man gør er at skrive navnet på upload objectet i stedet for reqeust. Form collectionen bliver gyldig efter man har lavet et kald til .upload. Så alle som denne:

varenummer=Request.Form("varenummer")

Skal rettes til:

varenummer=mySmartUpload.Form("varenummer")
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:02 #3
det er her med gjort, nu får jeg så bare fejl i skrivelsen i min DB.

Microsoft OLE DB Provider for SQL Server error '80040e07'

Syntax error converting the varchar value '46,48' to a column of data type int.

/add-adjust_vare_save.asp, line 46
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:08 #4
Hvilken er linie 46?
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:09 #5
45)    sql = "INSERT INTO shop_vare_str_ref(vareID,undergruppeID) VALUES('"&vareID&"','"&arrID(t)&"')"
46)    set record = rs.Execute(sql)
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:10 #6
Prøv uden ' omkring tallene når kolonne typen er tal:

sql = "INSERT INTO shop_vare_str_ref(vareID,undergruppeID) VALUES("&vareID&","&arrID(t)&")"
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:11 #7
There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.

/add-adjust_vare_save.asp, line 46


det fik jeg det her ud af
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:14 #8
Hmm det er nok vareID som indeholder 46,48. Skal vareID ikke splites lige som undergruppeID bliver splitet til arrID?
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:17 #9
46,48 er to undergruppeID'er som skal splites op. vareID'et skal knyttes til flere undergrupper, men efter jeg er begyndt at bruge mySmartUpload.form virker det ikke.
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:19 #10
Arh det er nok fordi der kun er "," og ikke ", " imellem to værdi i strengen så prøv lige at rette denne:

arrID = split(undergruppeID, ", ")

Til denne:

arrID = split(undergruppeID, ",")



og rette SQL sætningen tilbage som før og evt. med trim omkring sådan her:

sql = "INSERT INTO shop_vare_str_ref(vareID,undergruppeID) VALUES('"&vareID&"','"&trim(arrID(t))&"')"
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:24 #11
jo nu virker det hele som det skal, næsten. Det er meningen at det originale fil navn og type (billede.jpg) skal gemmes i databasen.
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:32 #12
Du kan få filnanvet og type ved dette:

if intCount > 0 then
  filnavn = mySmartUpload.Files.ITem(1).FileName
  filtype = mySmartUpload.Files.ITem(1).TypeMIME
end if



Det skal ind efter denne linie:

    intCount = mySmartUpload.Save("/billeder/jpg")



men prøgsmålet er hvad du mener med type? Hvis det er gif, jpg, bmp så det .FileExt du skal bruge i stedet for .TypeMIME
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:35 #13
med type mener jeg selvfølgelig .jpg, men nu bliver jeg lige nød til at stille et spørgsmål der nok er lidt ude af kategorie.

Hvad er .TypeMINE, hvad bruger man det til og hvad kan det?
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:40 #14
der bliver stadig ikke skrevet noget filnavn i databasen eller type.
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:41 #15
Det er en type og MIME står for Multipart Internet Mail Extensions. Et Jpg billede vil eksvis give "Image" en gif vil også give "Image". Der er så også en .SubTypeMIME som giver jpeg eller gif for de to eksempler.
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:42 #16
hvordan ser din SQL sætning ud nu?
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:43 #17
altså alle sql'er skriver det de skal, lige bort set fra den der skal skrive filnavnet og typen, og den ser sådan her ud:

sql = "INSERT INTO shop_varer(varenummer,model,pris,tilbudspris,beskrivelse,billede,synlig) VALUES('"&varenummer&"','"&model&"',convert(decimal(10,2), '"&pris&"'),convert(decimal(10,2), '"&tilbudspris&"'),'"&beskrivelse&"','"&billede&"','"&synlig&"')"
set record = rs.Execute(sql)
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:44 #18
Hvilken kolonne skal typen ind i?

Hvis du har bruge den variable jeg har vist så prøv sådan her hvor billede er skiftet ud med filnavn:

sql = "INSERT INTO shop_varer(varenummer,model,pris,tilbudspris,beskrivelse,billede,synlig) VALUES('"&varenummer&"','"&model&"',convert(decimal(10,2), '"&pris&"'),convert(decimal(10,2), '"&tilbudspris&"'),'"&beskrivelse&"','"&filnavn&"','"&synlig&"')"
set record = rs.Execute(sql)
Avatar billede webnoob Nybegynder
20. marts 2006 - 21:50 #19
godt så der kom "The prick over the I" som en god kendt politiker engang sagde.

Tak for hjælpen, super go' support. Lig et svar så du kan få de fortjente point.
Avatar billede eagleeye Praktikant
20. marts 2006 - 21:52 #20
Ok så 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