2016-12-01 5 views
0

私は周りを検索していて、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()しかし、それは何もしません

+0

http://stackoverflow.com/questions/18639929/accessing-uploaded-files-in-golangはこの答えで合理的な刺しを持っている可能性があるように見えます。 –

+0

完全なファイルパスを文字列として取得したいですか? – nosequeldeebee

答えて

1

私の知る限り、あなたのコードの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) 
} 
関連する問題