2016-12-02 3 views
0

Ich bin fast fertig mit einem Problem, das mich gestampft hat, wie ich Golal neu bin, ich versuche im Grunde, den absoluten Pfad einer Datei innerhalb der os.open Methode zu bekommen. Ich habe alle Arten von Dingen versucht, aber nichts funktioniertGolang Laufzeitfehler beim Abrufen der Datei absoluten Pfad

func UploadProfile(w http.ResponseWriter, r *http.Request) { 
    r.ParseForm() 
    infile, header, err := r.FormFile("upload_file") 
    if err != nil { 
     http.Error(w, "Error parsing uploaded file: "+err.Error(), http.StatusBadRequest) 
     return 
    } 
    defer infile.Close() 


     absolue_path := string(filepath.Abs(header.Filename)) 
        // I want to get the absolute path in os.Open 
    file, err := os.Open(absolute_path) 
    } 

zum Beispiel, wenn ich die Zeichenfolge harten Code in der os.Open wie /Users/Documents/pictures/cats.jpg dann der Datei hochgeladen . Wenn ich versuche, den absoluten Pfad zu bekommen und ihn in den os.Open zu setzen, bekomme ich diesen Fehler zur Laufzeit multiple-value filepath.Abs ​​() im Einzelwertkontext. Gibt es eine andere Möglichkeit, den Pfad der Datei zu erhalten, damit ich sie in diese Methode einfügen kann?

Antwort

2

Nach documentation, Abs Funktion gibt ZWEI Werte, eine Zeichenfolge und einen Fehler zurück.

So können Sie nicht so etwas wie haben:

absolute_path := string(filepath.Abs(header.Filename)) 

stattdessen sollten Sie schreiben:

absolute_path, err := filepath.Abs(header.Filename) 

Beachten Sie auch, dass absolute_path ein String ist bereits.

2

Der Compiler-Fehler aus dieser Codezeile (Mehrwert filepath.Abs ​​() in Zusammenhang Single-Wert)

absolue_path := string(filepath.Abs(header.Filename)) 

sagt Ihnen, dass filepath.Abs mehrere Argumente zurückkehrt und string nur ein Argument.

filepath.Abs gibt ein string und error

-Code sein sollte:

ap, err := filepath.Abs(header.Filename) 
if err != nil { 
    // handle error 
} 
+0

Perfekt danke sehr viel gearbeitet es –

Verwandte Themen