脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Golang实现图片上传功能的示例代码

Golang实现图片上传功能的示例代码

2022-10-11 12:22林台山人 Golang

这篇文章主要和大家分享一下如何利用Golang实现图片上传功能,文中的实现步骤讲解详细,对我们学习有一定的参考价值,需要的可以参考一下

该代码为使用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图片上传内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

延伸 · 阅读

精彩推荐
  • GolangGo语言实现IP段范围校验示例

    Go语言实现IP段范围校验示例

    这篇文章主要介绍了Go语言实现IP段范围校验示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    Meng小羽3642020-09-22
  • Golang浅谈Golang的new与make区别是什么

    浅谈Golang的new与make区别是什么

    本文主要介绍了Golang的new与make区别是什么,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    青灯夜游11792022-09-28
  • GolangGO 语言学习指南

    GO 语言学习指南

    这篇文章主要介绍了GO 语言学习指南,介绍的相当全面,有需要的小伙伴参考下吧。 ...

    hebedich5432020-04-12
  • GolangGO语言中的常量

    GO语言中的常量

    go语言支持的常量有字符型,字符串型,布尔型和数字型。本文实例讲述了Go语言中常量定义方法。分享给大家供大家参考。 ...

    脚本之家3912020-04-26
  • Golanggolang项目如何上线部署到Linux服务器(方法详解)

    golang项目如何上线部署到Linux服务器(方法详解)

    这篇文章主要介绍了golang项目如何上线部署到Linux服务器,本文通过两种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    章鱼哥104228752021-01-02
  • Golang在 Golang 中实现一个简单的Http中间件过程详解

    在 Golang 中实现一个简单的Http中间件过程详解

    本文在go web中简单的实现了中间件的机制,这样带来的好处也是显而易见的,当然社区也有一些成熟的 middleware 组件,包括 Gin 一些Web框架中也包含了 mid...

    SpringLeee11212021-08-17
  • GolangGo语言net包RPC远程调用三种方式http与json-rpc及tcp

    Go语言net包RPC远程调用三种方式http与json-rpc及tcp

    这篇文章主要为大家介绍了Go语言net包RPC远程调用三种方式分别使用http与json-rpc及tcp的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助...

    秋天的春9652021-12-05
  • Golanggolang实现分页算法实例代码

    golang实现分页算法实例代码

    这篇文章主要给大家介绍了关于golang实现分页算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    JimPang5542020-05-19