14. maj 2006 - 16:48Der er
6 kommentarer og 1 løsning
smartupload omdøbning af filnavn til uniktfilnavn
Hejsa, jeg benytter mig at aspsmartupload komponenten til at uploade billeder til et galleri. Alle billederne ryger i en stor mappe, hvorefter jeg sorterer i dem via data jeg har lagt i db. Men for at undgå at billeder bliver overskrevet hvis 2 billeder med samme filnavn bliver forsøgt lagt op, hvad skal jeg så gøre?
Jeg forestillede mig noget i stil med at man lige kontrollerede for hvert billede man uploadede, om der lå et billede med samme navn på serveren, og så man tilføjede noget ekstra til navnet lige som windows gør, når der er kopier af fx samme word dokument.
Det kan måske også gøres meget nemmere, plz tell me!
Her er et udsnit af koden, hvor det kan ses hvordan jeg gemmer filen på serveren:
For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If not file.IsMissing Then filnavn = file.FileName '**** Du kan her tjekke for "ulovlige" tegn og fjerne dem **** filnavn = replace(filnavn," ","_") filnavn = replace(filnavn,"å","aa") filnavn = replace(filnavn,"æ","ae") filnavn = replace(filnavn,"ø","oe")
Jeg har selv brugt now() til at give unikke filnavne. Ja ok, hvis nogen stiller tiden tilbage på serveren er muligheden for dubletter der, men sansynligheden er MEGET lille.
cyberkox den holder ikke hvis man uploader et billede med samme navn mere end én gang. Og det sker formentlig idet mange digitalkameraer navngiver billederne på samme måde. Fx. min fuji kamera kalde dem alle IMG_XXXXX (XXX = tal), og hver gang jeg sletter alt på kameraet starter den forfra med IMG_00001 osv.
loukas jeg tror jeg forsøger mig med din, så er det i hvert fald unikke navne, det kan man ikke slippe udenom. Tror dog jeg vil bruge dato og filnavn, så datoen ryger ind foran selve filens navn.
loukas skal smide et svar, det var hans der virkede.
mht. mit script så kommer det her:
OBS! Som forklaring skal det lige siges at jeg har delt db'en op i to tabeller:
gallerioversigt = her ses hovedinfo for hver serie i galleriet. Primærnøgle er galleriID galleri = her er selve filinfo for samtlige billeder i galleriet. Primærnøgle er billedID. Her benytter jeg galleriID som fremmednøgle til at kode gallerioversigt og galleri -tabellerne sammen.
Følgende uploadfunktion benytter jeg, når jeg opretter et nyt galleri samtidig med jeg uploader billeder til dette:
' Variables ' ********* Dim mySmartUpload Dim intCount Dim file
' HER ÅBNER VI DB FOR AT FÅ DET HØJESTE ID FRA GALLERIOVERSIGTEN + BRUGERNAVN ' ****************************************************************
Set oRs = Server.CreateObject("ADODB.recordset") Set oRs.ActiveConnection = oConn oRs.Source = strSQL2 oRs.LockType = 3 oRs.Open
' HER LØBER VI IGENNEM EN LØKKE, FOR HVER ENESTE FIL VI VIL UPLOADE ' ****************************************************************** For each file In mySmartUpload.Files If not file.IsMissing Then filnavn = file.FileName
'**** Du kan her tjekke for "ulovlige" tegn og fjerne dem **** filnavn = replace(filnavn," ","_") filnavn = replace(filnavn,"å","aa") filnavn = replace(filnavn,"æ","ae") filnavn = replace(filnavn,"ø","oe")
' HER GEMMER VI SÅ FILEN FYSISK ' ***************************** file.SaveAs("/klassen/galleri/"& strNytFilnavn)
' HER TILFØJER VI, FOR HVER FIL, DATA I DB ' **************************************** oRs.AddNew oRs("billednavn") = strNytFilnavn oRs("galleriID") = galleriID oRs("navn") = bruger oRs("dato") = now oRs.Update intCount = intCount + 1 End If Next
' HER ÅBNER VI DB FOR AT FÅ DET HØJESTE ID FRA GALLERIOVERSIGTEN ' ****************************************************************
' HER GEMMER VI GALLERIINFO TIL GALLERIOVERSIGTEN ' ************************************************* strSQL = "Insert into gallerioversigt (GalleriID, navn, dato, titel) values('"&galleriID&"','"&bruger&"','"&now&"','"&mysmartupload.Form("mappe")&"')" Conn.Execute(strSQL) ' læg mærke til at vi udfører sql-sætningen med det samme.
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.