获取文件绝对路径时的Golang运行时错误

时间:2016-12-02 22:36:31

标签: go

我几乎完成了一个问题,因为我是Golang的新手,我基本上试图在 os.open 方法中获取文件的绝对路径。我一直在尝试所有类型的东西,但没有任何作用

  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)
    }
例如,如果我在os.Open中硬编码字符串就像 /Users/Documents/pictures/cats.jpg 然后文件上传成功。当我尝试获取绝对路径并将其放入os.Open时,我在运行时多值filepath.Abs​​()在单值上下文中得到此错误。有没有其他方法可以获取文件的路径,以便我可以将其放在该方法中?

2 个答案:

答案 0 :(得分:2)

根据documentationAbs函数将返回两个值,一个字符串和一个错误。

所以你不能有这样的东西:

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

相反,你应该写:

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

另请注意,absolute_path已经是一个字符串。

答案 1 :(得分:2)

此代码行中的编译器错误(单值上下文中的多值filepath.Abs​​())

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

告诉你filepath.Abs正在返回多个参数,string只接受一个参数。

filepath.Abs会返回stringerror

代码应该是:

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