Avatar billede hansdam Nybegynder
15. december 2003 - 16:57 Der er 18 kommentarer og
1 løsning

AspSmartUpload problem med at omdøbe fil

Nu har jeg rodet i et godt stykke tid efter en måde hvorpå man kan ændre filnavnet på ens fil, som man uploader med aspsmartupload. Jeg har sørget for at der er skriveadgang på min IIS server og at Komponentet er installeret korekt.
Hvad er der så galt med dette script?:
'******************Kode******************************
<!-- #include file="beskyt.asp" -->
<%
'********************************************************************************************
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("<--Databasenavn-->.mdb")
Conn.Open DSN

SQL = "Select * FROM VUer WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

strUpnavn = rs("fornavn")

conn.close
set conn = nothing
'********************************************************************************************
'  Variables
'  *********
  Dim mySmartUpload
  Dim intCount
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Only allow jpg files
'  ***************************
  mySmartUpload.AllowedFilesList = "jpg,jpeg"

'  Deny physical path
'  *******************
  mySmartUpload.DenyPhysicalPath = True
 


'***********************************************************
Randomize
StrTal = int((99999999999999*Rnd)+1)
kat = request.form("kat")
strdato = Now
strdato = Split(strDato," ")
strdato1 = strdato(0)

strfilnavn = kat & "-" & strUpnavn & "-" & strdato1 & "-" & StrTal & ".jpg"

mySmartUpload.filename = strfilnavn
intCount = mySmartUpload.Save("Billeder")

  '  Upload
'  ******
  mySmartUpload.Upload

'  Trap errors
'  ***********
  If Err Then
      Response.Write("<b>Wrong selection : </b>" & Err.description)
  Else
  '  Display the number of files uploaded
  '  ************************************

'**************************************************************************
' tilføj data til database
'**************************************************************************

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("<--Databasenavn-->.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From PicInfo"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("filnavn") = Request("filnavn") & ".jpg"
      rs("Filesize") = file.Size & " Bytes"
      rs("kat") = request.form("kat")
      rs("Dato") = Now
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
'*****************************
' Send videre...
'*****************************
response.redirect "Billeder.asp?mode=upload"
  End If
%>
'**********************kode slut**************'
I skal altså koncentrere jer om der hvor jeg gør mit spinkle forsøg på at omdøbe filen der bliver oploaded. Jeg gør opmærksom på at jeg kun vil tillade upload af en fil af gangen
Avatar billede hansdam Nybegynder
15. december 2003 - 16:58 #1
Jeg får denne fejlmelding:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: 'filename'
Upload.asp, line 46
Line 46 er der hvor denne linje er:
------------------------------------
mySmartUpload.filename = strfilnavn
------------------------------------
-Hans
Avatar billede eagleeye Praktikant
15. december 2003 - 17:19 #2
Du kan ikke gøre det sådan her:

mySmartUpload.filename = strfilnavn
intCount = mySmartUpload.Save("Billeder")


Prøv at rette de to linjer til dette:


mySmartUpload.Upload
For each file In mySmartUpload.Files
  If not file.IsMissing Then
    file.SaveAs(strfilnavn)
  End If
Next
Avatar billede hansdam Nybegynder
15. december 2003 - 17:33 #3
SÅ viser den bare denne fejl:
Fejltype:
Request-objekt, ASP 0206 (0x80004005)
BinaryRead kan ikke kaldes, når Request.Form-samling er brugt.
/VUpage/Upload.asp, line 46
Avatar billede eagleeye Praktikant
15. december 2003 - 17:43 #4
Ja det rigtigt man kan ikke bruge request.From når man uploader så skal man bruge upload objectet til at hendte form data, godt nok på samme måde:
kat = request.form("kat")
Bliver til:
kat = mySmartUpload.form("kat")


Dog kan man først det efter man har kaldt .Upload så du skal lige flytte lidt rundt på koden sådan dett her:

'***********************************************************
Randomize
StrTal = int((99999999999999*Rnd)+1)
kat = request.form("kat")
strdato = Now
strdato = Split(strDato," ")
strdato1 = strdato(0)

strfilnavn = kat & "-" & strUpnavn & "-" & strdato1 & "-" & StrTal & ".jpg"

mySmartUpload.Upload
For each file In mySmartUpload.Files
  If not file.IsMissing Then
    file.SaveAs(strfilnavn)
  End If
Next




Bliver til dette:

'***********************************************************
mySmartUpload.Upload

Randomize
StrTal = int((99999999999999*Rnd)+1)
kat = request.form("kat")
strdato = Now
strdato = Split(strDato," ")
strdato1 = strdato(0)

strfilnavn = kat & "-" & strUpnavn & "-" & strdato1 & "-" & StrTal & ".jpg"

For each file In mySmartUpload.Files
  If not file.IsMissing Then
    file.SaveAs(strfilnavn)
  End If
Next
Avatar billede hansdam Nybegynder
15. december 2003 - 17:49 #5
hmmm.. Nu laver den så denne fejl... øøøhhh:
Fejltype:
Request-objekt, ASP 0207 (0x80004005)
Request.Form-samling kan ikke bruges, når BinaryRead er kaldt.
/VUpage/Upload.asp, line 42
Avatar billede eagleeye Praktikant
15. december 2003 - 17:50 #6
hov fik ikke rette denne:
kat = request.form("kat")

Til.

kat = mySmartUpload.form("kat")
Avatar billede eagleeye Praktikant
15. december 2003 - 17:52 #7
det gælder så også der hvor der skrives til databasen:


      rs.AddNew
      rs("filnavn") = Request("filnavn") & ".jpg"      '<---- Er det et FORM item?
      rs("Filesize") = file.Size & " Bytes"
      rs("kat") = mySmartUpload.form("kat")
      rs("Dato") = Now
      rs.Update
Avatar billede hansdam Nybegynder
15. december 2003 - 17:58 #8
Okay, nu virker så selve omdøbningen... Nu er der så bare denne fejl:
Fejltype:
aspSmartUpload (0x800A0009)
Subscript out of range
/VUpage/Upload.asp, line 58
Linjen 58 er denne linje:
---------------------
mySmartUpload.Upload
---------------------
'**************************************************************
'---------------------Jeg skriver lige hele koden igen, så vi er sikre på at vi begge ved hvad jeg har lavet siden vi begyndte--------
<!-- #include file="beskyt.asp" -->
<%
'********************************************************************************************
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

SQL = "Select * FROM VUer WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

strUpnavn = rs("fornavn")

conn.close
set conn = nothing
'********************************************************************************************
'  Variables
'  *********
  Dim mySmartUpload
  Dim intCount
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Only allow jpg files
'  ***************************
  mySmartUpload.AllowedFilesList = "jpg,jpeg"

'  Deny physical path
'  *******************
  mySmartUpload.DenyPhysicalPath = True
 


'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************

mySmartUpload.Upload

For each file In mySmartUpload.Files
  If not file.IsMissing Then
 
  Randomize
StrTal = int((99999999999999*Rnd)+1)
kat = mySmartUpload.form("kat")
strdato = Now
strdato = Split(strDato," ")
strdato1 = strdato(0)

strfilnavn = kat & "-" & strUpnavn & "-" & strdato1 & "-" & StrTal & ".jpg"

    file.SaveAs(strfilnavn)
  End If
Next

  '  Upload
'  ******
  mySmartUpload.Upload

'  Trap errors
'  ***********
  If Err Then
      Response.Write("<b>Wrong selection : </b>" & Err.description)
  Else
  '  Display the number of files uploaded
  '  ************************************

'**************************************************************************
' tilføj data til database
'**************************************************************************

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("billeder.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From PicInfo"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("filnavn") = strfilnavn & ".jpg"
      rs("Filesize") = file.Size & " Bytes"
      rs("kat") = mySmartUpload.form("kat")
      rs("Dato") = Now
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
'*****************************
' Send videre...
'*****************************
response.redirect "Billeder.asp?mode=upload"
  End If
%>
'**********************************************************
Avatar billede eagleeye Praktikant
15. december 2003 - 18:00 #9
Ok, det så fordi .upload er kommet med to gange ;)

Prøv et fjerne det med .Upload anden gang det bliver kaldt :

  '  Upload
'  ******
'  mySmartUpload.Upload          '<------- udkommenter / slet den linje
Avatar billede hansdam Nybegynder
15. december 2003 - 18:17 #10
hmmm Nu melder den fejl her:
'**************************************************************************
' tilføj data til database
'**************************************************************************

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Billeder.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From PicInfo"
    rs.Open strSQL, Conn

      rs.AddNew
      rs("Filnavn") = strfilnavn & ".jpg"
      rs("Filesize") = file.Size & " Bytes"
      rs("Kat") = mySmartUpload.form("kat")
      rs("Dato") = Now
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
'*****************************
' Send videre...
'*****************************
Fejltype:
ADODB.Recordset (0x800A0CB3)
Det aktuelle postsæt understøtter ikke opdatering. Det kan skyldes en begrænsing af provideren eller den markerede låsetype.
/VUpage/Upload.asp, line 78
Linje 78 er:
      rs.AddNew
--------------------------
Det jeg gerne vil have til at stå i det felt der hedder "filnavn" Jeg filens nye filnavn som jeg har givet den.
Avatar billede eagleeye Praktikant
15. december 2003 - 18:38 #11
Prøv at rette denne linje fra:

rs.Open strSQL, Conn

Til:

rs.Open strSQL, Conn, 1
Avatar billede hansdam Nybegynder
15. december 2003 - 18:40 #12
nope - samme fejl
Avatar billede eagleeye Praktikant
15. december 2003 - 18:43 #13
er det din egen server?
Det kunne være noget med rettigeder til den folder databasen ligger i.
Avatar billede eagleeye Praktikant
15. december 2003 - 18:44 #14
Prøv lige at skrive ;:

rs.Open strSQL, Conn, 1, 3
Avatar billede hansdam Nybegynder
15. december 2003 - 18:52 #15
Fedt - nu virker det... næsten... Jeg skal have billeder lagt i en mappe der hedder "billeder" - Hvordan?
Avatar billede eagleeye Praktikant
15. december 2003 - 19:12 #16
Der er to muligheder skal det med i navnet i databasen så tilføje det til strfilnavn valirablen eller så tilføje det til SaveAs, her tilføjet til variablen strfilnavn og med / foran som angiver folderen billeder skal være i roden på serveren.:

  strfilnavn = "/billeder/" & kat & "-" & strUpnavn & "-" & strdato1 & "-" & StrTal & ".jpg"
  file.SaveAs(strfilnavn)
Avatar billede hansdam Nybegynder
15. december 2003 - 19:17 #17
Tak :-D Du er bare gud!
Her har du dine fuldt fortjente points :-D Du har reddet mig dag ;)

-Hans
Avatar billede hansdam Nybegynder
15. december 2003 - 19:37 #18
Forresten eagleeye - Jeg har set på et af mine tidligere oprettede spørgsmål at jeg er kommet til at snyde dig for nogle points. Det må du undskylde, det har ikke været meningen. Jeg vil derfor gøre det godt igen, ved at jeg lige laver et spørgsmål, så skal du bare ligge et svar derind, så får du points'ene på den måde

- mvh Hans - og undskyld endnu engang
ps. Jeg ligger lige endnu en kommentar ind her, når spørgsmålet er oprettet...
Avatar billede hansdam Nybegynder
15. december 2003 - 19:39 #19
sådan - http://www.eksperten.dk/spm/440292 og jeg takker endnu engang for et godt svar :-D
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