golang实现图片上传
本文内容纲要:
-golang实现图片上传
golang实现图片上传
该代码为使用beego实现前后端图片上传。话不多说,直接上代码。
1.前端代码
html代码:
<div class="col-5f-ltexttext-r">背景图(必须):</div>
<div class="img-box">
<label>
<spanclass="copy-btnHui-iconfont"></span>
<inputtype="file"class="up-file">
</label>
</div>
<div class="img-filecol-offset-5">
</div>
JS代码:
a.读取图片代码,用于在页面上显示。
//读取图片
functionloadImg(){
//获取文件
varfile=$(".up-file")[0].files[0];
//创建读取文件的对象
varreader=newFileReader();
//创建文件读取相关的变量
varimgFile;
//为文件读取成功设置事件
reader.onload=function(e){
vare=window.event||e;
imgFile=e.target.result;
console.log(imgFile);
$(".img-file").css({'background':"url("+imgFile+")"});
isimg();
};
//正式读取文件
reader.readAsDataURL(file);
}
b.验证是否有图片存在
//是否有图片验证
functionisimg(){
varimg=$(".img-file").css('background-image');
if(img.indexOf("data:image")==-1&&img.indexOf(".jpg")==-1){
$(".mess").html("请添加背景图片").css("opacity",1);
returnfalse;
}
else{
$(".mess").css("opacity",0).html("");
returntrue;
}
}
c.提交上传,将图片以base64编码的方式传给后端
functionaddData(){
varurl=$(".img-file").css("background-image");
vardata1=[{"name":"url","value":url}];
$.ajax({
url:"/commmethod/method/uploadimg",
data:data1,
type:"post",
ContentType:"application/json",
success:function(resp){
......
}
});
}
2.后端代码
func(this*CommMethodController)UploadImg(){
fileurl:=this.GetString("url")
DataArr:=strings.Split(fileurl,",")
//去除包装,获取到base64编码
imgBase64:=DataArr[1][:len(DataArr[1])-2]
//base64转码
imgs,err:=base64.StdEncoding.DecodeString(imgBase64)
iferr!=nil{
beego.Error("base64decodeerror:",err)
}
timenow:=time.Now().Unix()
file,err:=os.OpenFile("./static/img/"+strconv.FormatInt(timenow,10)+".jpg",os.O_CREATE|os.O_WRONLY,0644)
iferr!=nil{
beego.Debug("createfileerror:",err)
}
w:=bufio.NewWriter(file)//创建新的Writer对象
_,err3:=w.WriteString(string(imgs))
iferr3!=nil{
beego.Error("writeerror:",err3)
}
w.Flush()
deferfile.Close()
imgname:=strconv.FormatInt(timenow,10)+".jpg"
t:=struct{
ImageNamestring`json:"imagename"`
}{imgname}
this.Data["json"]=t
this.ServeJSON()
}
/**
*此代码主要用于编辑图片时,删除原有图片
*判断文件是否存在存在返回true不存在返回false
*/
funccheckFileIsExist(filenamestring)bool{
varexist=true
if_,err:=os.Stat(filename);os.IsNotExist(err){
exist=false
}
returnexist
}
本文内容总结:golang实现图片上传,
原文链接:https://www.cnblogs.com/dfsxh/p/10248215.html