Avatar billede hehlers Nybegynder
09. maj 2007 - 12:56 Der er 19 kommentarer og
1 løsning

Lidt hjælp til aspSmartUpload

Hejsa

Hele 3 spørgsmål. :)

Jeg har et modul hvor brugere kan indsætte data i en db og uploade et billede hertil.

For det første har jeg et problem med indsættelsen i databasen. aspSmartUpload er ikke glad for denne linie her:
---------------------------------------------
rs("dato_ned") = mySmartUpload.Form("dato") + mySmartUpload.Form("dage")

---------------------------------------------
Så til det mere vanskelige. Billedet bliver uploadet og gemt som filnavnet, men det er jo ikke så godt, hvis en bruger kalder billedet det samme.

Derfor kunne jeg godt tænke mig at give billedet det samme navn som id'et.

Her er min kode:
--------------------------------¨
'  Variables
'  *********
  Dim mySmartUpload
  Dim file
  Dim intCount
  intCount=0
       
'  Object creation
'  ***************
 
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

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


'  Select each file
'  ****************
  For each file In mySmartUpload.Files
  '  Only if the file exist
  '  **********************
      If not file.IsMissing Then
      '  Save the files with his original names in a virtual path of the web server
      '  ****************************************************************************
       
        file.SaveAs("images/upload/" & file.FileName)

'Tilføjer data til databasen
    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "select * from tbl_auktion"
    rs.Open strsql, conn, 1, 3

'Tilføjer brugeren til databasen og sender ham/hende til login siden
   
    rs.AddNew
    rs("ovs") = mySmartUpload.Form("ovs")
    rs("txt") = mySmartUpload.Form("txt")
    rs("dato") = mySmartUpload.Form("dato")
    rs("mindstepris") = mySmartUpload.Form("mindstepris")
    rs("startpris") = mySmartUpload.Form("startpris")
    rs("budforoegelse") = mySmartUpload.Form("budforoegelse")
    rs("stand") = mySmartUpload.Form("stand")
    rs("bruger_id") = mySmartUpload.Form("session_id")
    rs("ip_log") = mySmartUpload.Form("ip_log")
    rs("billede") = FileName
    rs("dato_ned") = mySmartUpload.Form("dato") + mySmartUpload.Form("dage")
    response.write(strsql)
    'rs.update

        intCount = intCount + 1

End If
'  Display the number of files which could be uploaded
'  ***************************************************
  Response.Write("<BR>" & mySmartUpload.Files.Count & " file(r) kunne blive uploaded.<BR>")

'  Display the number of files uploaded
'  ************************************
  Response.Write(intCount & " file(r) uploaded.<BR>")
Next
------------------------------------------------

Og sidste spørgsmål. Hvordan laver jeg det således at billedet max må fylde 50 kb og være af typen jpg eller gif?

På forhånd tusind tak.
Avatar billede fennec Nybegynder
09. maj 2007 - 13:02 #1
Prøv med:
rs("dato_ned") = cDate(mySmartUpload.Form("dato")) + cLng(mySmartUpload.Form("dage"))
Avatar billede fennec Nybegynder
09. maj 2007 - 13:08 #2
Desværre findes den officielle dokumentation til aspSmartUpload ikke mere. Men dette er taget fra denne:
http://www.mistral.net/asp/aspSmartUpload/SmartUploadObject.htm

Fil størrelse:
mySmartUpload.MaxFileSize = 50000

Filliste:
mySmartUpload.AllowedFilesList = "jpg,gif"
Avatar billede fennec Nybegynder
09. maj 2007 - 13:11 #3
Angående filnavnet og frygten for at overskrive en fil, så har du tilfældigvis ikke adgang til aspUpload fra Persist i stedet?? Den har indbygget funktionalitet til unikkenfilnavne, og koden er næsten den samme som aspSmartUpload.
Avatar billede hehlers Nybegynder
09. maj 2007 - 13:29 #4
Tak fennec!

Jo, jeg har faktisk adgang til persits. Så må jeg lige prøve at lave koden om... Vender tilbage.. ;)
Avatar billede hehlers Nybegynder
09. maj 2007 - 13:42 #5
Kan ski ikke rigtigt finde ud af hvordan aspUpload fungerer i samarbejde med en database?
Avatar billede mitbrugernavn Praktikant
09. maj 2007 - 13:51 #6
sådan gør du når du omdøber filen

Dim mySmartUpload
  Dim intCount

  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
'mySmartUpload.CodePage = "utf-8"
  mySmartUpload.Upload


For each file In mySmartUpload.Files
  If not file.IsMissing Then 

strdato = Now()
strdato = replace(strDato,"-","_")
strdato = replace(strDato,"/","_")
strdato = replace(strDato,":","_")
strdato = replace(strDato," ","_")

Navn = trim(mySmartUpload.Files("top_image").Filename)
Navn = replace(Navn,"æ","")
Navn = replace(Navn,"ø","")
Navn = replace(Navn,"å","")
Navn = replace(Navn,"Æ","")
Navn = replace(Navn,"Ø","")
Navn = replace(Navn,"Å","")
Navn = replace(Navn," ","")
Navn = replace(Navn,"%","")
Navn = trim(Navn)
navn = replace(Navn,"."," ")
navn = right(navn,Len(navn)-InstrRev(navn," "))
navn = "." & navn

billed = strdato & navn
'husk sti foran filnavnet
billed_sti = "din mappe" & billed
'her gemmes filen med nyt navn
  file.SaveAs(billed_sti)


end if
next
Avatar billede fennec Nybegynder
09. maj 2007 - 13:52 #7
Upload.OverwriteFiles = False
Upload.SetMaxSize 50000, True

Den har ikke en AllowedFilesList funktione, men det klares via en memory upload også tjekke ext via files inden man gemmer filerne. Det bliver noget i denne stil:

Upload.OverwriteFiles = False
Upload.SetMaxSize 50000, True
'Ingen path på save = memoryupload
upload.save
for each file in Upload.Files
  if file.ext = "gif" or file.ext = "jpg" then
    file.saveAs "c:\path\" & File.FileName
  end if
next

Tjek manualen. Den har beskrivelse for filnavn indsættelse og blob indsættelse:
http://www.aspupload.com/manual_db.html
Avatar billede fennec Nybegynder
09. maj 2007 - 13:55 #8
Kan lige så godt smide hele koden:

Set Upload = Server.CreateObject("Persits.Upload")
Upload.OverwriteFiles = False
Upload.SetMaxSize 50000, True
upload.save
for each file in Upload.Files
  if file.ext = "gif" or file.ext = "jpg" then
    file.saveAs "c:\path\" & File.FileName
    rs.AddNew
    rs("ovs") = Upload.Form("ovs")
    rs("txt") = Upload.Form("txt")
    rs("dato") = Upload.Form("dato")
    rs("mindstepris") = Upload.Form("mindstepris")
    rs("startpris") = Upload.Form("startpris")
    rs("budforoegelse") = Upload.Form("budforoegelse")
    rs("stand") = Upload.Form("stand")
    rs("bruger_id") = Upload.Form("session_id")
    rs("ip_log") = Upload.Form("ip_log")
    rs("billede") = file.FileName
    rs("dato_ned") = cDate(Upload.Form("dato")) + cLng(Upload.Form("dage"))
    response.write(strsql)
    rs.update
  end if
next

ps. Skrevet direkte i textarea'et, så der er måske en fejl eller to :o)
Avatar billede hehlers Nybegynder
09. maj 2007 - 14:09 #9
Jeg har nu denne kode, men databasen bliver ikke opdateret og billedet bliver ikke uploadet.

Kan du se hvad jeg gør galt?

------------------------


    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "select * from tbl_auktion"
    rs.Open strsql, conn, 1, 3


   
    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False
    Upload.SetMaxSize 50000, True
    upload.save
    for each file in Upload.Files
      if file.ext = "gif" or file.ext = "jpg" then
    file.saveAs "images/upload/" & File.FileName
    rs.AddNew
    rs("ovs") = Upload.Form("ovs")
    rs("txt") = Upload.Form("txt")
    rs("dato") = Upload.Form("dato")
    rs("mindstepris") = Upload.Form("mindstepris")
    rs("startpris") = Upload.Form("startpris")
    rs("budforoegelse") = Upload.Form("budforoegelse")
    rs("stand") = Upload.Form("stand")
    rs("bruger_id") = Upload.Form("session_id")
    rs("ip_log") = Upload.Form("ip_log")
    rs("billede") = file.FileName
    rs("dato_ned") = cDate(Upload.Form("dato")) + cLng(Upload.Form("dage"))
   
    rs.update
  end if
next
response.redirect("opret_auktion.asp?menu=fodboldauktioner&action=oprettet")
Avatar billede fennec Nybegynder
09. maj 2007 - 14:17 #10
Du mangler nok en server.mappath()
file.saveAs server.mappath("images/upload/") & File.FileName

Får du ikke en fejlmeddelse?
Avatar billede hehlers Nybegynder
09. maj 2007 - 14:28 #11
nej, jeg får nemlig ingen fejlmeddelelse.
Jeg bliver bare redirectet somom alt var i den skønneste orden. ;)

Her er den komplette kode:

if action = "opret_auktion" then

'upload billede


    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "select * from tbl_auktion"
    rs.Open strsql, conn, 1, 3

    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False
    Upload.SetMaxSize 50000, True
    upload.save
    for each file in Upload.Files
      if file.ext = "gif" or file.ext = "jpg" then
    file.saveAs server.mappath("images/upload/") & File.FileName
    rs.AddNew
    rs("ovs") = Upload.Form("ovs")
    rs("txt") = Upload.Form("txt")
    rs("dato") = Upload.Form("dato")
    rs("mindstepris") = Upload.Form("mindstepris")
    rs("startpris") = Upload.Form("startpris")
    rs("budforoegelse") = Upload.Form("budforoegelse")
    rs("stand") = Upload.Form("stand")
    rs("bruger_id") = Upload.Form("session_id")
    rs("ip_log") = Upload.Form("ip_log")
    rs("billede") = file.FileName
    rs("dato_ned") = cDate(Upload.Form("dato")) + cLng(Upload.Form("dage"))
   
    rs.update
  end if
next
response.redirect("opret_auktion.asp?menu=fodboldauktioner&action=oprettet")           

end if
Avatar billede fennec Nybegynder
09. maj 2007 - 14:57 #12
Tror vist det er fordi file.ext har "." med, også kan vi lige så godt tjekke for lowcase:

if lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg" then
Avatar billede hehlers Nybegynder
10. maj 2007 - 13:55 #13
Tak Fennec, det virker nu.

Er det nemt at lave det således at man bliver redirectet til opret_auktion.asp, såfremt at billedet ikke er jpg eller gif, eller det fylder over 50 kb?

Så må jeg lige prøve at kigge på det med at gemme som ID...
Avatar billede fennec Nybegynder
10. maj 2007 - 14:16 #14
Det med ID burde være unødvendig når du har Upload.OverwriteFiles = False. Så omdøber den selv filnavne til
fil.txt
fil(1).txt
fil(2).txt

Det med redirect er forholdsvist nemt:
...
if (file.ext = "gif" or file.ext = "jpg") and File.Size < 50000 then
    file.saveAs server.mappath("images/upload/") & File.FileName
    rs.AddNew
    rs("ovs") = Upload.Form("ovs")
    rs("txt") = Upload.Form("txt")
    rs("dato") = Upload.Form("dato")
    rs("mindstepris") = Upload.Form("mindstepris")
    rs("startpris") = Upload.Form("startpris")
    rs("budforoegelse") = Upload.Form("budforoegelse")
    rs("stand") = Upload.Form("stand")
    rs("bruger_id") = Upload.Form("session_id")
    rs("ip_log") = Upload.Form("ip_log")
    rs("billede") = file.FileName
    rs("dato_ned") = cDate(Upload.Form("dato")) + cLng(Upload.Form("dage"))
    rs.update
else
    response.redirect("opret_auktion.asp")
end if

Med filstørrelsen kan du ikke have Upload.SetMaxSize 50000, True på længere da alle filer over den størrelse ikke vil blive uploaded. Det vil jeg dog ikke anbefale, da du risikere at folk uploader meget store filer.
Avatar billede hehlers Nybegynder
10. maj 2007 - 15:06 #15
Mht. ID - herligt!!

Jeg har dog problemer med det andet. Med nedenstående kode bliver jeg redirectet til opret_auktion.asp, selvom billedet er af den rette type?

----------------------------
Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "select * from tbl_auktion"
    rs.Open strsql, conn, 1, 3

   
    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False
    upload.save
    for each file in Upload.Files
      if (file.ext = "gif" or file.ext = "jpg") and File.Size < 50000 then
    file.saveAs server.mappath("images/upload/") & File.FileName
    rs.AddNew
    rs("ovs") = Upload.Form("ovs")
    rs("txt") = Upload.Form("txt")
    rs("dato") = Upload.Form("dato")
    rs("mindstepris") = Upload.Form("mindstepris")
    rs("startpris") = Upload.Form("startpris")
    rs("budforoegelse") = Upload.Form("budforoegelse")
    rs("stand") = Upload.Form("stand")
    rs("bruger_id") = Upload.Form("session_id")
    rs("ip_log") = Upload.Form("ip_log")
    rs("billede") = file.FileName
    rs("dato_ned") = cDate(Upload.Form("dato")) + cLng(Upload.Form("dage"))
    rs.update
else
    response.redirect("opret_auktion.asp?menu=fodboldauktioner&etx=Billedet er for stort eller forkert filtype.")
end if

---------------------------------
mvh

Henrik
Avatar billede fennec Nybegynder
10. maj 2007 - 15:12 #16
Min fejl. Jeg glemt . på filextensioen og lCase:

if (lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg") and File.Size < 50000 then
Avatar billede hehlers Nybegynder
10. maj 2007 - 15:20 #17
FREMRAGENDE!!! :)

Så mangler jeg bare en lille detalje, nemlig at billedet ikke bliver gemt i images/upload, men kun i images folderen?
Avatar billede fennec Nybegynder
10. maj 2007 - 15:36 #18
file.saveAs server.mappath("images/upload/") &"/"& File.FileName
Avatar billede hehlers Nybegynder
10. maj 2007 - 17:50 #19
En fornøjelse... Tak Fennec - beklager de mange spørgsmål. :)
Avatar billede fennec Nybegynder
11. maj 2007 - 08:11 #20
Helt i orden :o)
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