golang實現檔案上傳並轉存資料庫功能詳解
導讀 | 這篇文章主要為大家詳細介紹了golang實現檔案上傳並轉存資料庫功能,文中示例程式碼介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們可以參考一下 |
本文例項為大家分享了golang實現檔案上傳並轉存資料庫的具體程式碼,供大家參考,具體內容如下
需求
上傳圖片,且可選擇將圖片儲存到資料中。
一、流程圖
二、步驟
1.上傳檔案介面
獲取檔案,並返回base64string流
程式碼如下(示例):
func setIconPost(c *gin.Context) { //獲取檔案,icon實現對上傳檔案的訪問,header是對上傳檔案資訊的標記 icon,header,err :=c.Request.FormFile("file") dangerous(err) defer icon.Close() //path.Ext是取字尾,Tolower小寫 ext := strings.ToLower(path.Ext(header.Filename)) if header.Size>1024*1024*2{ fmt.Println("檔案過大") } buf := bytes.NewBuffer(nil) //讀取icon的資料存入buf中 if _,err := io.Copy(buf,icon);err != nil{ return } //將base64返回前端 renderData(c, gin.H{ "base64":base64.StdEncoding.EncodeToString(buf.Bytes()), "icon-ext":ext, },nil) }
2.儲存資料
程式碼如下(示例):
func setEntPost(c *gin.Context) { var f Identical bind(c,&f) models.EtpSave(f.Copyright,"copyright") models.EtpSave(f.Introduction,"introduction") models.EtpSave(f.Icon,"icon") models.EtpSave(f.Logo,"logo") models.EtpSave(f.Version,"version") models.EtpSave(f.Belong,"belong") renderMessage(c,nil) }
3.儲存的資料庫操作
type Etp struct { Id int `json:"id"` Ckey string `json:"ckey"` Cval string `json:"cval"` Kind int `json:"kind"` } func EtpSave(cval, ckey string) error { var obj Etp //資料庫是否存在 has,err := DB["rdb"].Table("configs").Where("ckey=?",ckey).Get(&obj) if err != nil{ return err } //不存在 if !has { _, err = DB["rdb"].Table("configs").Where("ckey=?",ckey).Insert(Etp{ Ckey: ckey, Cval: cval, Kind: 1, }) }else{ obj.Cval = cval DB["rdb"].Table("configs").Where("ckey=?",ckey).Cols("cval").Update(&obj) } return err }
4.最佳化
若上傳圖片稍大,在轉存MySQL時會報錯。Data too long for column '......' at row 1
解決方法
將資料庫欄位格式設定為longtext
總結
本需求主要難點在於對於golang核心庫方法的掌握,包括上傳檔案,[]bytes 和 string之間的轉換。
整體框架:
一、接收檔案/圖片介面
二、修改/儲存圖片的介面
三、儲存資料的方法
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2909925/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringBoot實現檔案上傳功能詳解Spring Boot
- 把影像檔案上傳到資料庫,並從資料庫讀出 (轉)資料庫
- 【node】檔案上傳功能簡易實現
- 自定義檔案上傳功能實現方法
- 使用Spring Boot實現檔案上傳功能Spring Boot
- struts檔案上傳詳解
- AJAX資料互動及檔案上傳功能
- 配置php.ini實現PHP檔案上傳功能PHP
- 檔案上傳(解析)漏洞詳解
- 檔案上傳漏洞思路詳解
- ajax實現檔案上傳
- input 實現檔案上傳,並驗證檔案不大於5M
- 強大靈活的檔案上傳庫:FilePond 詳解
- PHP實現單檔案、多檔案上傳 封裝 物件導向實現檔案上傳PHP封裝物件
- .net web core 如何編碼實現檔案上傳功能Web
- 教你如何實現c#檔案上傳下載功能C#
- 前端頁面上實現表單提交檔案上傳功能前端
- 利用FormData物件實現AJAX檔案上傳功能及後端實現ORM物件後端
- AngularJS實現的檔案檔案上傳AngularJS
- HttpFileCollection 實現多檔案上傳HTTP
- 檔案上傳原理和實現
- springmvc實現檔案上傳SpringMVC
- Asp.Net 上傳大檔案專題(3)--從請求流中獲取資料並儲存為檔案[上]ASP.NET
- Vue實現多檔案上傳功能(前端 + 後端程式碼)Vue前端後端
- nodejs+express(4.x+)實現檔案上傳功能NodeJSExpress
- SpringCloudGateway閘道器服務實現檔案上傳功能SpringGCCloudGateway
- jq實現上傳頭像並實時預覽功能
- Jsp+Servlet實現檔案上傳下載(一)--檔案上傳JSServlet
- Linux斷點續傳檔案功能詳解Linux斷點
- 在ASP.NET中實現多檔案上傳 (轉)ASP.NET
- 通過配置檔案(.htaccess)實現檔案上傳
- 使用java的MultipartFile實現layui官網檔案上傳實現全部示例,java檔案上傳JavaUI
- js實現帶上傳進度的檔案上傳JS
- SSH(STRUTS2+SPRING+HIBERNATE)實現檔案上傳功能Spring
- 上傳檔案並目錄打散
- PHP實現圖片(檔案)上傳PHP
- Java檔案上傳如何實現呢?Java
- 關於node實現檔案上傳