【问题标题】:Golang path to image and uploading getting mixed results图像和上传的Golang路径得到混合结果
【发布时间】:2017-01-10 20:09:45
【问题描述】:

我已经成功地将图像上传到我的 ImageStore 帐户,但是我不得不对每个文件路径进行硬编码。我的问题是我的图像位于我的 GoPath 之外,有什么方法可以在不硬编码的情况下获取图像的实际目录?比如

GoPath = "/Users/IH/Documents/go"

实际图像路径 = "/Users/IH/Documents/pictures/horse_PNG2538.png"

我得到的路径 = "/Users/IH/Documents/go/src"

我需要获取图片的正确路径,因为用户将能够上传他们的图片,而且显然他们都有不同的图片路径。这是我的代码

myfile, handler, err := r.FormFile("uploadImage")
if err != nil {
    fmt.Println(err)

    return
}
defer myfile.Close()


pwd, err := os.Getwd()
if err != nil {
    fmt.Println(err)
    os.Exit(1)
}
fmt.Println(pwd)

file,err := os.Open(pwd + handler.Filename)

defer file.Close()
if err != nil {
    fmt.Printf("err opening file: %s", err)
}

密码给了我路径 /Users/IH/Documents/go/src 这当然会给我一个错误,因为那里找不到图像。例如,如果我对正确的图像地址进行硬编码,则它会上传诸如

file,err := os.Open("/Users/IH/Documents/pictures/horse_PNG2538.png")

然后图像被上传。同样,此图像来自此目录 /Users/IH/Documents/pictures/ 如何在不对其进行硬编码的情况下在图像上传时发现该目录?任何建议都会很棒

【问题讨论】:

  • 如果你不想硬编码你的路径前缀,那么它必须是可配置的。你可以使用任何你想要的方式,比如环境变量、配置文件、用户输入,任何适合你的用例。

标签: go


【解决方案1】:

“os/user”包允许你像这样确定当前用户的目录:

package main

import (
    "fmt"
    "log"
    "os/user"
)

func main() {
    usr, err := user.Current()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(usr.HomeDir)
}

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多