09. maj 2007 - 12:56Der 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
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?
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.
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)
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
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...
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.
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.