Jag är ute efter en funktion som gör om t.ex. ett filnamn så det är säkert på webben. Typ
MakeWebsafeName(myFile)
Finns det någon sådan eller måsta man göra den själv *suck* ;)
12 svar · 352 visningar · startad av daPhil
Jag är ute efter en funktion som gör om t.ex. ett filnamn så det är säkert på webben. Typ
MakeWebsafeName(myFile)
Finns det någon sådan eller måsta man göra den själv *suck* ;)
Jag kanska var lite luddig, jag menar alltså en funktion som ersätter mellanslag med "_" och åäö med aao etc etc.
Här är ett sätt att göra det på:
<%
Function MakeWebsafeName(str)
str = trim(str)
str = Replace(str, " ", "_")
str = Replace(str, "å", "a")
str = Replace(str, "ä", "a")
str = Replace(str, "ö", "o")
MakeWebsafeName = str
End Function
myFile = "världens bästa bil.jpg"
Response.Write MakeWebsafeName(myFile)
%>
Lite snabbt hopplock:
Function MakeWebsafeName(ByVal fileName)
If Len("" & fileName) = 0 then Exit Function
fileName = LCase(fileName)
'## --byt ut mellanslag --
fileName = Replace(fileName, " ", "_")
'## --byt ut å --
fileName = Replace(fileName, "å", "a")
'## --byt ut ä --
fileName = Replace(fileName, "ä", "a")
'## --byt ut ö --
fileName = Replace(fileName, "ö", "o")
MakeWebsafeName = fileName
End Function
ngt sådant borde funka alldeles utmärkt.
cya,
PatrikB
Jo precis, men det finns fler tecken än åäö, jag undrade om det fanns någon färdig funktion? Jag orkar inte sitta o skriva en funktion själv som inkluderar alla apostrof-bokstäver, franska skumma saker etc etc..
Det kanske finns någon komponent för det? Om det är många olika tecken som ska bytas ut lär funktionen bli ofantligt stor...
:)
Hur får du filnamnen?
Genom ett inmatningsformulär???
I såfall så kan du ju göra en funktion som går igenom och kolla så att varje boksav är <valid>, dvs a-z, A-Z, 0-9, _
En funktion i javascript som först kollar på klientsidan och sedan en funktion som kollar på server sidan att allt är ifyllt korrekt.
cya,
PatrikB
Det är ett uploadscript som lägger filen på hårddisken och samtidigt döper om filen till ett webbsäkert namn, det riktiga filnamnet lagras samtidigt i en databas. Ingen ska bli nekad att skicka upp en fil, den ska döpas om automatiskt, men det ser ju aldrig användaren eftersom det riktiga filnamnet ligger kvar i db'n och är det som visas....
En funktion som gör det jag vill verkar tyvärr inte finnas och den skulle som sagt bli ofantligt stor om den ska täcka alla tecken som existerar :( jag får hitta på något annat
Hm...
I såfall så kan du ju göra en funktion som går igenom och kolla så att varje boksav är <valid>, dvs a-z, A-Z, 0-9, _
Kan du inte köra meddet då? Samt att den byter ut vilken förekomst som helst med en o samma bokstav, typ -.
Du spara ju ändå det rätta filnamnet i databasen så det spelar väl egentligen ingen roll vad filen heter hos dig?
Iofs så kan det väl inte vara så många olika tecken man kan stöta på? eller?
Det finns mer än ÅÄÖ där ute....
¡¢£°Ë¥?§¨©ª«¬ú®¯°±©˜©¯´µ¶·¸©ˆº»1/43/4¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÅ~ØÙÚÛÜæçèêëïõñÿŒ
daPhil skrev:
Det finns mer än ÅÄÖ där ute....
¡¢£°Ë¥?§¨©ª«¬ú®¯°±©˜©¯´µ¶·¸©ˆº»1/43/4¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÅ~ØÙÚÛÜæçèêëïõñÿŒ
:birp Och dessa använder man ofta i filnamn...
Vad är det för några idioter som använder tecknet för Copyright när de skapar en fil? Eller är det ett program som slumpar ut tecken?
Jag föreslår nästan att du ser över vad som matas in först istället för vad som ska ersättas....
:)
Function MakeSafeName(ByVal sString)
Dim i, c, sNewString
sString = Trim(LCase(sString))
Const sSpec = "öåä&üéèáà/\$£*"
Const sConv = "oaaoueeaa--SLx"
For i = 1 To Len(sSpec)
sString = Replace(sString, Mid(sSpec, i, 1), Mid(sConv, i, 1))
Next 'i
For i = 1 To Len(sString)
c = Mid(sString, i, 1)
Select Case c
Case "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", _
"v", "w", "x", "y", "z", "_", "-", _
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
sNewString = sNewString & c
Case Else
sNewString = sNewString & "x"
End Select
Next 'i
MakeSafeName = sNewString
End Function
Response.Write MakeSafeName("fkfk#%/%;åäö")