Använd FSO för att byta namn på filen.
http://classicasp.aspfaq.com/files/directories-fso/can-i-rename-a-file-using-filesystemobject.html
mvh
7 svar · 1 042 visningar · startad av civilpolisen
http://www.aspupload.com/manual_misc.html
Hur gör jag för att byta tecken i filer som laddas upp??
Jag har ännu inte klurat ut det...
' ## NO OVERWRITE
Upload.OverwriteFiles = False
' ## SAVE FILE
Upload.Save Server.MapPath("\pdf\") & "\"
' ## Obtain file object
Set File = Upload.Files("FILE1")
' ## REPLACE CHARACTERS
DIM myFileName
myFileName = File.Filename
myFileName = replace() <---- detta blir fel då filen redan är uppladdad!!
IF NOT File IS NOTHING THEN
stoppa in i databasen...
Använd FSO för att byta namn på filen.
http://classicasp.aspfaq.com/files/directories-fso/can-i-rename-a-file-using-filesystemobject.html
mvh
Om det är nån som vill ha. Går säkert att göra snyggare, men det fungerar i alla fall. Funkar bra för ändamålet! :-)
IF request("dbaction") = "insert" THEN
' ## NO OVERWRITE
Upload.OverwriteFiles = False
' ## SAVE FILE
Upload.Save Server.MapPath("\pdf\") & "\"
' ## Obtain file object
Set File = Upload.Files("FILE1")
IF NOT File IS NOTHING THEN
' ## REPLACE CHARACTERS USING FSO
DIM myFileName
myFileName = File.Filename
myFileName = replace(myFileName, " ", "_")
myFileName = replace(myFileName, "Å", "A")
myFileName = replace(myFileName, "Ä", "A")
myFileName = replace(myFileName, "Ö", "O")
myFileName = replace(myFileName, "å", "a")
myFileName = replace(myFileName, "ä", "a")
myFileName = replace(myFileName, "ö", "o")
myFileName = replace(myFileName, "Ü", "U")
myFileName = replace(myFileName, "ü", "u")
' ## CHECK FOR FREE NAME
set fso = CreateObject("Scripting.FileSystemObject")
IF fso.fileExists( Server.MapPath("\pdf\") & "\" & myFileName ) THEN
myArrayXX = split( myFileName, ".", -1, 1)
strFileName = myArrayXX(0)& "_"
intCounter = 1
strExt = "." & myArrayXX(1)
myFileName = strFileName & intCounter & strExt
' ## CHECK FOR DUPLICATES
WHILE fso.fileExists( Server.MapPath("\pdf\") & "\" & myFileName )
myFileName = strFileName & CInt(intCounter) +1 & strExt
intCounter = intCounter + 1
WEND
END IF
set fso = Nothing
' ## REPLACE FILE
' ## SOURCE: http://classicasp.aspfaq.com/files/directories-fso/can-i-rename-a-file-using-filesystemobject.html
set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile Server.MapPath("\pdf\") & "\" & File.Filename , Server.MapPath("\pdf\") & "\" & myFileName
set fso = Nothing
' ## NEW POST
SQL = "INSERT INTO [" & myTable & "] (intCatalogueSEID, strName, dteCreated, dteViewFrom, dteViewTo, " _
& " strFileName, intFilesize, intSortfield, bolView) SELECT " _
& myID & ", '" _
& myFileName & "', #" _
& date() & "#, #" & date() & "#, #" & date() & "#, '" _
& myFileName & "', " _
& File.Size & ", " _
& " (COUNT(*)+1), TRUE FROM [" & myTable & "] WHERE intCatalogueSEID = " & myID & ";"
Conn.Execute(SQL)
' Response.Write "File saved."
ELSE
' Response.Write "File not selected."
END IF
END IF
Även om hela replace-delen säkert skulle gå bra att göra med ett reguljärt uttryck istället hade jag gjort hela filnamnsbytet i en egen funktion istället. Det känns inte så vackert att ha hela det där kodstycket inne i loopen. :)
mvh
Öhh... det är ju samma kod fast inte på samma ställe...(??) Eller vad menar du!?
Det blir ju inte MINDRE kod!?
Det blir möjligen estetiskt mer tilltalande, men det är inget man får betalt för direkt. Dessutom, det är 20 rader... Orka bry sig.
Det är ingen loop. Koden exekveras bara EN gång för man kan bara ladda upp en fil åt gången. (Syns iofs inte i den bifogade koden, men så är det.)
Förlåt, inte loop.
Vad spelar det för roll om det blir mindre kod? Man är väl ute efter att göra BRA kod. :)
"Refactoring" och "återanvändbarhet" är sköna ord i min värld (åtminstone om man har någon sorts yrkesstolthet) - men i gammal ASP är det kanske inte mycket värt? :)
Allright.
Jag säger som det är, jag har kopierat denna koden från annan plats... Den är redan återanvänd.
Jag håller med dig i sak, men nu orkar jag inte göra det där snyggare primärt av två anledningar:
1. Ingen kommer tacka mig för det.
2. "If it works don't touch it."
Dessutom är det aldrig någon som ser koden förutom när jag dristar mig till att posta koden i offentliga forum som detta!! :-)