文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Golang Gin框架实现文件下载功能的示例代码怎么写

2023-06-22 00:34

关注

这期内容当中小编将会给大家带来有关Golang Gin框架实现文件下载功能的示例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Layui框架实现文件上传

基本的思路就是随便创建一个元素,然后使用layui的upload组件对创建的元素进行渲染,详见代码

<!DOCTYPE html><html lang="en"><head>    <script src="jquery-3.5.0.min.js" type="text/javascript"></script> <!-- jquery包,记得替换为你本地的路径 -->    <link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" > <!--layui框架的样式库 同样你本地的路径 -->    <script src="pkg/layui/layui.js"></script><!--enmmm 没错,路径--></head><body><!-- 这里我是用的a标签,当然你可以使用别的 label、button等均可--> <a href="javascript:(0);" rel="external nofollow"  id="attachment-upload">+添加附件</a></body><script>//以layui.js的方式引入使用时需要手动加载layui的组件layui.use(['layer','upload'],function(){ // PS:个人理解,该行只是为了引入layui框架的组件,html文件加载完毕后执行,内部的代码和直接写在script标签内没啥区别,只是可以在代码中使用layer了// 此处引入layer只是为了打印一些东西var layer = layui.layer,upload = layui.upload;// 渲染元素,使其支持文件上传// 详情请移步 https://www.layui.com/doc/modules/upload.html// https://www.layui.com/demo/upload.html upload.render({            elem: '#attachment-upload', // 感觉利用了jquery的id选择器,这里用#id(上传附件的标签、按钮值类型元素id)就可以了            url: dev_url + "fc/upload", // 后端接收上传文件的接口地址            headers: {   // 这里官方文档中没有,是在请求后端接口时在request header中增加一些请求参数,实测可行                'api_token': uInfo            },            accept: 'file', // 这里可以限定支持上传文件的类型,详见文档            done: function (res) { // 调用后端上传文件接口后的返回           // 这里解析下后端的返回字段,具体怎么着看业务吧                if (res.success == false) {                    layer.msg("上传文件失败!" + res.msg);                }        });})</script></html>

PS:注意下使用layui上传文件的请求格式为multiply/form-data,参数为file,(binary)格式

Golang Gin框架实现文件下载功能的示例代码怎么写

Gin框架获取前端上传的文件

func UploadFileControl(c *gin.Context) {logrus.Infof("[UploadFileControl] user_id =%d", userId)// GIN框架获取前端上传文件// 这里的参数其实是上传文件时的字段名,也就是上面图片中的file,如果前端是自己定义的其他字段名,需要替换下uploadFile, fileHeader, err := c.Request.FormFile("file")if err != nil {c.JSON(http.StatusOK, gin.H{"success": false,"msg":     "获取文件信息失败!" + err.Error(),})}if uploadFile != nil { // 记得及时关闭文件,避免内存泄漏defer uploadFile.Close()}// 读取上传文件的内容// 其实这里直接读取所有不太合理,如果文件过大时会占用很多内存,可以考虑使用缓冲区读取fileContent, err := ioutil.ReadAll(uploadFile)if err != nil {c.JSON(http.StatusOK, gin.H{"success": false,"msg":     "读取文件内容失败!" + err.Error(),})}// 接受到文件后的处理方式,可以保存到本地,也可以上传到文件对象,看自己了// 这里向前端返回下上传成功的信息c.JSON(http.StatusOK, gin.H{"success":   true,"msg":       "",})}

Gin框架的文件下载

        Response Header中的Content-Type指定了服务器端返回数据的类型,浏览器自己是可以处理这些类型的,当返回的数据为文件类型时,浏览器会自行下载。具体的类型和content-type的对应方式可见

文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type)
.*( 二进制流,不知道下载文件类型)application/octet-stream.tifimage/tiff
.001application/x-001.301application/x-301
.323text/h423.906application/x-906
.907drawing/907.a11application/x-a11
.acpaudio/x-mei-aac.aiapplication/postscript
.aifaudio/aiff.aifcaudio/aiff
.aiffaudio/aiff.anvapplication/x-anv
.asatext/asa.asfvideo/x-ms-asf
.asptext/asp.asxvideo/x-ms-asf
.auaudio/basic.avivideo/avi
.awfapplication/vnd.adobe.workflow.biztext/xml
.bmpapplication/x-bmp.botapplication/x-bot
.c4tapplication/x-c4t.c90application/x-c90
.calapplication/x-cals.catapplication/vnd.ms-pki.seccat
.cdfapplication/x-netcdf.cdrapplication/x-cdr
.celapplication/x-cel.cerapplication/x-x509-ca-cert
.cg4application/x-g4.cgmapplication/x-cgm
.citapplication/x-cit.classjava// 设置返回头并返回数据fileContentDisposition := "attachment;filename=\"" + attachmentName + "\""c.Header("Content-Type", "application/zip") // 这里是压缩文件类型 .zipc.Header("Content-Disposition", fileContentDisposition)c.Data(http.StatusOK, contentType, fileContent)

上述就是小编为大家分享的Golang Gin框架实现文件下载功能的示例代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧