我一直在搜索,无法找到在Go中获取完整文件路径的方法。我有一个常规的html表单,然后我尝试在后端获取所有信息
<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 :(得分:2)
据我所知,您无法从代码中的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)
}
答案 1 :(得分:0)
这是一个示例:
package main
import (
"fmt"
"path/filepath"
)
func main() {
abs,err := filepath.Abs("./hello.go")
if err == nil {
fmt.Println("Absolute:", abs)
}
}