2017-01-09 53 views
0

我已經成功地將圖像上傳到我的ImageStore帳戶,但是我必須硬編碼每個文件路徑。我的問題是我的圖片位於我的GoPath之外,有什麼方法可以讓我的圖片實際目錄不經過硬編碼?例如Golang路徑圖像和上傳得到混合結果

GOPATH = 「/用戶/ IH /文檔/去」

實際圖像路徑 = 「/Users/IH/Documents/pictures/horse_PNG2538.png」

路徑我越來越 =「/用戶/ IH /文檔/去/ 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) 
} 

的PWD給我路徑/用戶/ IH /文檔/去/ src目錄因爲圖像是沒有找到它offcourse給我一個錯誤。如果我例如硬編碼正確的圖像地址並將其上傳如

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

然後將圖像被上傳。這個圖像來自這個目錄/用戶/ IH /文件/圖片/我怎樣才能發現上傳圖像上的目錄,而不硬編碼呢?任何建議將是巨大

+0

如果你不想硬編碼的路徑前綴,則它必須是可配置的。您可以使用任何您想要的方式,例如環境變量,配置文件,用戶輸入,無論您的用例如何。 –

回答

0

的「OS /用戶」軟件包允許用戶確定當前用戶的目錄,如下所示:

package main 

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

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

    fmt.Println(usr.HomeDir) 
}