Ce face filepath.Localize
filepath.Localize primește o cale în formatul io/fs (separator /, fără / la început, fără ..) și returnează varianta pentru sistemul curent: pe Windows înlocuiește / cu \.
Dacă calea nu este validă pentru fs.ValidPath sau nu poate fi reprezentată local (pe Windows: conține \, : sau un nume rezervat), returnează o eroare. Este mai strictă decât FromSlash și o folosești când transformi căi primite din exterior.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea cu separator /. |
Ce returnează
Calea locală și nil, sau "" și o eroare.
Exemple
Exemplul 1: Căi acceptate și refuzate
Rezultat pe Linux/macOS, unde separatorul rămâne /.
package main
import (
"fmt"
"path/filepath"
)
func main() {
for _, c := range []string{"css/stil.css", "../secret", "/etc/passwd", "a//b", "."} {
local, err := filepath.Localize(c)
fmt.Printf("%-14q -> %q, eroare: %v\n", c, local, err)
}
}
Rezultat
"css/stil.css" -> "css/stil.css", eroare: <nil>
"../secret" -> "", eroare: invalid path
"/etc/passwd" -> "", eroare: invalid path
"a//b" -> "", eroare: invalid path
"." -> ".", eroare: <nil>
Exemplul 2: Pe Windows
package main
import (
"fmt"
"path/filepath"
)
func main() {
for _, c := range []string{"css/stil.css", `a\b`, "NUL"} {
local, err := filepath.Localize(c)
fmt.Printf("%q -> %q, eroare: %v\n", c, local, err)
}
}
Rezultat pe Windows
"css/stil.css" -> "css\\stil.css", eroare: <nil>
"a\\b" -> "", eroare: invalid path
"NUL" -> "", eroare: invalid path
Greșeli frecvente
- Folosești
FromSlashpentru căi venite din URL-uri.FromSlashnu refuză..;Localizeda.
Comenzi înrudite
filepath.FromSlash: FromSlash înlocuiește „/” cu separatorul sistemului; ToSlash face invers, înlocuind separatorul cu „/”.filepath.IsLocal: Spune dacă o cale rămâne în interiorul directorului curent: nu e absolută, nu e goală și nu urcă cu „..”.os.DirFS: Transformă un director de pe disc într-un fs.FS, sistemul de fișiere abstract din Go.