2016-12-01 101 views
0

我一直在四處搜索,並找不到一種方法來獲取Go中的完整文件路徑。我有一個普通的HTML表單,然後我試圖讓所有的信息在後端Golang我怎樣才能得到完整的文件路徑

<form method="post" enctype="multipart/form-data" action="/uploads"> 
    <p><input type="file" name="my file" id="my file"></p> 
    <p> 
     <input type="submit" value="Submit"> 
    </p> 

func upload() { 

    f,h,err := r.FormFile("my file") 
    if err != nil { 
     log.Println(err) 
     http.Error(w,"Error Uploading",http.StatusInternalServerError) 
     return 
    } 
    defer f.Close() 
    println(h.Filename) 
    } 

//這讓我的文件的名字,我想它的完整路徑

我有嘗試文件path.dir()但這並沒有做任何事

+0

看起來像http://stackoverflow.com/questions/18639929/accessing-uploaded-files-in-golang可能有一個合理的刺在這個答案。 –

+0

你是否希望獲得完整的文件路徑作爲一個字符串? – nosequeldeebee

回答

1

據我所知,你不能從你的代碼中獲得f值的文件路徑。因爲文件數據尚未存儲在磁盤中。

而你想將文件存儲到一個路徑,你可以這樣做。

f,h,err := r.FormFile("myfile") 
if err != nil{ 
    log.Println("err: ",err) 
    http.Error(w,"Error Uploading",http.StatusInternalServerError) 
    return 
} 
defer f.Close() 
fmt.Println("filename: ",h.Filename) 


bytes, err := ioutil.ReadAll(f) 
if err != nil { 
    fmt.Println(err) 
} 
filepath := "./aa" //set your filename and filepath 
err = ioutil.WriteFile("aa", bytes, 0777) 
if err != nil { 
    fmt.Println(err) 
}