Golang如何获得完整的文件路径

时间:2016-12-01 04:29:14

标签: go

我一直在搜索,无法找到在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()但是没有做任何事情

2 个答案:

答案 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)
   }
}