Golang實現(xiàn)圖片上傳功能的示例代碼
該代碼為使用beego實現(xiàn)前后端圖片上傳。話不多說,直接上代碼。
1.前端代碼
html代碼:
<div class="col-5 f-l text text-r">背景圖(必須):</div>
<div class="img-box">
<label>
<span class="copy-btn Hui-iconfont"></span>
<input type="file" class="up-file">
</label>
</div>
<div class="img-file col-offset-5">
</div>2.JS代碼
a.讀取圖片代碼,用于在頁面上顯示
//讀取圖片
function loadImg(){
//獲取文件
var file = $(".up-file")[0].files[0];
//創(chuàng)建讀取文件的對象
var reader = new FileReader();
//創(chuàng)建文件讀取相關(guān)的變量
var imgFile;
//為文件讀取成功設(shè)置事件
reader.onload=function(e) {
var e=window.event||e;
imgFile = e.target.result;
console.log(imgFile);
$(".img-file").css({'background':"url("+imgFile+")"});
isimg();
};
//正式讀取文件
reader.readAsDataURL(file);
}b.驗證是否有圖片存在
//是否有圖片驗證
function isimg(){
var img= $(".img-file").css('background-image');
if(img.indexOf("data:image")==-1&&img.indexOf(".jpg")==-1){
$(".mess").html("請?zhí)砑颖尘皥D片").css("opacity",1);
return false;
}
else{
$(".mess").css("opacity",0).html("");
return true;
}
}c.提交上傳,將圖片以base64編碼的方式傳給后端
function addData(){
var url=$(".img-file").css("background-image");
var data1=[{"name":"url","value":url}];
$.ajax({
url:"/commmethod/method/uploadimg",
data:data1,
type:"post",
ContentType:"application/json",
success:function(resp){
......
}
});
}3.后端代碼
func (this *CommMethodController) UploadImg() {
fileurl := this.GetString("url")
DataArr := strings.Split(fileurl, ",")
//去除包裝,獲取到base64編碼
imgBase64 := DataArr[1][:len(DataArr[1])-2]
//base64轉(zhuǎn)碼
imgs, err := base64.StdEncoding.DecodeString(imgBase64)
if err != nil {
beego.Error("base64 decode error:", err)
}
timenow := time.Now().Unix()
file, err := os.OpenFile("./static/img/"+strconv.FormatInt(timenow, 10)+".jpg", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
beego.Debug("create file error:", err)
}
w := bufio.NewWriter(file) //創(chuàng)建新的 Writer 對象
_, err3 := w.WriteString(string(imgs))
if err3 != nil {
beego.Error("write error:", err3)
}
w.Flush()
defer file.Close()
imgname := strconv.FormatInt(timenow, 10) + ".jpg"
t := struct {
ImageName string `json:"imagename"`
}{imgname}
this.Data["json"] = t
this.ServeJSON()
}
/**
*此代碼主要用于編輯圖片時,刪除原有圖片
* 判斷文件是否存在 存在返回 true 不存在返回false
*/
func checkFileIsExist(filename string) bool {
var exist = true
if _, err := os.Stat(filename); os.IsNotExist(err) {
exist = false
}
return exist
}到此這篇關(guān)于Golang實現(xiàn)圖片上傳功能的示例代碼的文章就介紹到這了,更多相關(guān)Golang圖片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- golang?gin框架實現(xiàn)大文件的流式上傳功能
- golang?Gin上傳文件返回前端及中間件實現(xiàn)示例
- Golang 如何限制木馬圖片上傳服務(wù)器的實例
- Golang實現(xiàn)http文件上傳小功能的案例
- golang實現(xiàn)的文件上傳下載小工具
- golang語言實現(xiàn)的文件上傳與文件下載功能示例
- Golang實現(xiàn)異步上傳文件支持進(jìn)度條查詢的方法
- Golang+Android基于HttpURLConnection實現(xiàn)的文件上傳功能示例
- golang簡單獲取上傳文件大小的實現(xiàn)代碼
- golang實現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫功能
相關(guān)文章
Golang項目搭配nginx部署反向代理負(fù)載均衡講解
這篇文章主要為大家介紹了Golang項目搭配nginx部署正反向代理負(fù)載均衡講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
超實用的Golang通道指南之輕松實現(xiàn)并發(fā)編程
Golang?中的通道是一種高效、安全、靈活的并發(fā)機(jī)制,用于在并發(fā)環(huán)境下實現(xiàn)數(shù)據(jù)的同步和傳遞。本文主要介紹了如何利用通道輕松實現(xiàn)并發(fā)編程,需要的可以參考一下2023-04-04
Go數(shù)據(jù)結(jié)構(gòu)之HeapMap實現(xiàn)指定Key刪除堆
這篇文章主要給大家介紹了Go語言數(shù)據(jù)結(jié)構(gòu)之HeapMap實現(xiàn)指定Key刪除堆,通過使用Go語言中的container/heap包,我們可以輕松地實現(xiàn)一個優(yōu)先級隊列,文中有詳細(xì)的代碼示例講解,需要的朋友可以參考下2023-07-07
深入理解Go gin框架中Context的Request和Writer對象
這篇文章主要為大家詳細(xì)介紹了Go語言的gin框架中Context的Request和Writer對象,文中的示例代碼講解詳細(xì),對我們深入了解Go語言有一定的幫助,快跟隨小編一起學(xué)習(xí)一下吧2023-04-04

