Golang實現Web文件上傳

jopen 9年前發布 | 41K 次閱讀 Google Go/Golang開發 Golang

// fileUpload project main.go
package main

import (     "fmt"     "html/template"     "io"     "log"     "net/http"     "os" )

var buf []byte

func upload(w http.ResponseWriter, r *http.Request) {     r.ParseForm()     if r.Method == "GET" {         t, err := template.ParseFiles("upload.gptl")         checkErr(err)         t.Execute(w, nil)     } else {         file, handle, err := r.FormFile("file")         checkErr(err)         f, err := os.OpenFile("./test/"+handle.Filename, os.O_WRONLY|os.O_CREATE, 0666)         io.Copy(f, file)         checkErr(err)         defer f.Close()         defer file.Close()         fmt.Println("upload success")     } }

func checkErr(err error) {     if err != nil {         err.Error()     } }

func main() {     http.HandleFunc("/upload", upload)     err := http.ListenAndServe(":8888", nil)     if err != nil {         log.Fatal("listenAndServe: ", err)     } }</pre>


最主要的其實也就是這兩句:

f, err := os.OpenFile("./test/"+handle.Filename, os.O_WRONLY|os.O_CREATE, 0666)
io.Copy(f, file)

執行目錄,權限,然后執行copy


upload.gptl文件:

<html>
    <head></head>
    <body>
        <form action="upload" method="post" enctype="multipart/form-data">
            <input type="file" name="file" value="" /> 
            <input type="submit" name="submit" />
        </form>
    </body>
</html>


如果當前目錄下沒有test文件夾,不會自動創建。需要手動創建

來自:http://my.oschina.net/0x4ad/blog/378209

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!