该代码为使用beego实现前后端图片上传。话不多说,直接上代码。
1.前端代码
html代码:
1
2
3
4
5
6
7
8
9
|
< 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.读取图片代码,用于在页面上显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//读取图片 function loadImg(){ //获取文件 var file = $( ".up-file" )[0].files[0]; //创建读取文件的对象 var reader = new FileReader(); //创建文件读取相关的变量 var imgFile; //为文件读取成功设置事件 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.验证是否有图片存在
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//是否有图片验证 function isimg(){ var img= $( ".img-file" ).css( 'background-image' ); if (img.indexOf( "data:image" )==-1&&img.indexOf( ".jpg" )==-1){ $( ".mess" ).html( "请添加背景图片" ).css( "opacity" ,1); return false ; } else { $( ".mess" ).css( "opacity" ,0).html( "" ); return true ; } } |
c.提交上传,将图片以base64编码的方式传给后端
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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.后端代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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) 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) //创建新的 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 } |
到此这篇关于Golang实现图片上传功能的示例代码的文章就介绍到这了,更多相关Golang图片上传内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!