Beego-上傳檔案

來源:互聯網
上載者:User

標籤:The   get   first   str   https   multi   func   close   create   

1.上傳檔案
1.beego官網

查看上傳 https://gowalker.org/github.com/astaxie/beego 

2.找到SaveToFile方法

//SaveToFile saves uploaded file to new path. it only operates the first one of mutil-upload form file field.

func (c *Controller) SaveToFile(fromfile, tofile string) error {
    file, _, err := c.Ctx.Request.FormFile(fromfile)    if err != nil {        return err    }    defer file.Close()    f, err := os.OpenFile(tofile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)    if err != nil {        return err    }    defer f.Close()    io.Copy(f, file)    return nil}
3.查看beego文檔,在請求參數中,有上傳檔案

(1.)form 表單中,新增屬性 enctype=”multipart/form-data”  ,擷取請求參數 c.Input().Get(“id”)

(2.)beego提供了兩個方法來處理檔案上傳:

GetFile(key string) (multipart.File, *multipart.FileHeader, error)  //該方法主要用於使用者讀取表單中的檔案名稱 the_file,然後返回相應的資訊,使用者根據這些變數來處理檔案上傳:過濾、儲存檔案等

SaveToFile(fromfile, tofile string) error  //該方法是在 GetFile 的基礎上實現了快速儲存的功能,fromfile 是提交時候的 html 表單中的 name

(3.) 程式碼範例:

<form enctype="multipart/form-data" method="post">
     <input type="file" name="uploadname" />
     <input type="submit">
</form>

func (c *FormController) Post() {
     f, h, err := c.GetFile("uploadname")
     if err != nil {
         log.Fatal("getfile err ", err)
     }
     defer f.Close()
     c.SaveToFile("uploadname", "static/upload/" + h.Filename) // 儲存位置在 static/upload, 沒有檔案夾要先建立
    
}

(4.) 檔案路徑名拼接

path.Join(“path”,fileName)  //該函數會根據不同的作業系統,使用不同的路徑分隔字元

(5.)從URL中擷取參數

reqURL := c.ctx.Request.RequestURI  //為處理中文 可用 url.QueryUnescape(reqURL)

id := strings.LastIndex(reqURL,”/”)

tid := requrl[i+1:]

4.使用golang原生的上傳:

//SaveToFile saves uploaded file to new path. it only operates the first one of mutil-upload form file field.

func (c *Controller) SaveToFile(fromfile, tofile string) error {
    file, _, err := c.Ctx.Request.FormFile(fromfile)    if err != nil {        return err    }    defer file.Close()    f, err := os.OpenFile(tofile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)    if err != nil {        return err    }    defer f.Close()    io.Copy(f, file)    return nil}

Beego-上傳檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.