如何在golang中使用文件编写目录?

如何在golang中使用文件编写目录?,go,Go,现在,我正在尝试使用os.Create,但它在指定文件路径时给了我一个错误。我必须将我的文件从HTML上传到我的文件系统中的特定目录中 file,err:= c.FormFile("file") if err!=nil{ checkErr(err) } src, err := file.Open() if err!=nil{ checkErr(err) } defer src.Close() abs,err :=filepath.Abs("/dir1/dir2/") if er

现在,我正在尝试使用os.Create,但它在指定文件路径时给了我一个错误。我必须将我的文件从HTML上传到我的文件系统中的特定目录中

file,err:= c.FormFile("file")
if err!=nil{
    checkErr(err)
}
src, err := file.Open()
if err!=nil{
    checkErr(err)
}
defer src.Close()

abs,err :=filepath.Abs("/dir1/dir2/")
if err!=nil{
    checkErr(err)
}

dst,err := os.Create(abs+"/"+file.Filename)
if err !=nil{
    checkErr(err)
}
defer dst.Close()
if _,err = io.Copy(dst,src); err!=nil{
    checkErr(err)
}
我必须把文件上传到dir2。请帮帮我。谢谢。

用于从目录
dir
和文件名创建路径

要防止写入文件系统中的任意位置,请使用清除路径

用于从目录
dir
和文件名创建路径

要防止写入文件系统中的任意位置,请使用清除路径


提供代码,请查看代码@Rudziankoŭ如果
abs
/dir1/dir2/
,那么在使用
os创建文件时,请连接额外的
/
。创建
这可能不是问题,但将
abs+“/”+file.Filename
替换为
filepath.Join(abs,file.Filename)
。另外,像这样使用客户端提供的文件名是危险的。程序会给出任何错误吗?提供代码,请参阅代码@Rudziankoŭ如果
abs
/dir1/dir2/
,那么在使用
os创建文件时,您会连接额外的
/
。创建
这可能不是问题,但替换
abs+“/”+file.Filename
filepath.Join(abs,file.Filename)
。另外,像这样使用客户端提供的文件名是危险的。程序会给出任何错误吗?不清楚什么是
checkErr(err)
我在范围内没有这样的功能,快速谷歌搜索也不会得到答案。只是“某个用户定义的函数”检查错误吗?@standalone函数
checkErr
来自这个问题。它是应用程序提供的用于处理错误的函数。除了在问题和答案中所做的之外,还有其他处理错误的方法,但这超出了问题的范围。什么是
checkErr(err)
并不明显,我在范围中没有这样的功能,快速谷歌搜索无法得到答案。只是“某个用户定义的函数”检查错误吗?@standalone函数
checkErr
来自这个问题。它是应用程序提供的用于处理错误的函数。除了问题和答案中的错误,还有其他处理错误的方法,但这超出了问题的范围。
file, err := c.FormFile("file")
if err != nil {
    checkErr(err)
    return
}
src, err := file.Open()
if err != nil {
    checkErr(err)
    return
}
defer src.Close()

dst, err := os.Create(filepath.Join(dir, filepath.Base(file.Filename))) // dir is directory where you want to save file.
if err != nil {
    checkErr(err)
    return
}
defer dst.Close()
if _, err = io.Copy(dst, src); err != nil {
    checkErr(err)
    return
}