GoWeb-Gin 文件上载

时间:2022-08-30 23:35:43

前些日子,我们Node.JS了一把。

如今,我们还是回到我们伟大的GO来吧

今天,带领大家继续Golang的啦,而且是个上传文件的例子

先给大家看结果

1. 如果是windows端,你需要安装postman,这个是谷歌浏览器的插件,模拟HTTP客户端。我下载的可以独立使用

GoWeb-Gin 文件上载

记得form表单的key域类型要选择‘文件’,这里是个坑,我搞了不少时间,一直奇怪,为何Linux客户端可以上载,但是windodws客户端就是不行。后了,才发现是这个问题。

Linux终端下,你输入客户端命令就行:

curl -X POST http://localhost:8080/upload -F "file=@./test.txt" -H "Content-Type:multipart/form-data"

记得在windows下也好,linux下也吧,test.txt,10.1.docx那是我要上传的文件,请替换成你们自己的文件

//

gonic-gin:一个好用的web框架

一.下载安装

直接用go的get命令就可以了,ZTND简单,哈哈哈

go get github.com/gin-gonic/gin

二.go工程里使用

import进"github.com/gin-gonic/gin"就行了,简单的不要不要的。。。

import (
  "github.com/gin-gonic/gin"
)
三.今天的主角,DEMO:upload file
//gin.go

package main

import (
  "fmt"
  "net/http"
  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  // Set a lower memory limit for multipart forms (default is 32 MiB)
  router.MaxMultipartMemory = 8 << 20 // 8 MiB
  router.Static("/", "./public")
  router.POST("/upload", func(c *gin.Context) {
    // Source
    file, err := c.FormFile("file")
    if err != nil {
      c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
      return
    }
    if err := c.SaveUploadedFile(file, file.Filename); err != nil {
      c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
      return
    }
    c.String(http.StatusOK, fmt.Sprintf("File %s uploaded successfully\n", file.Filename))
  })
  router.Run(":8080")
}

//编译运行

go build gin.go

./gin

//结果

哈哈,在本文最上边呢!

ls(服务器上看看,果然 10.1.docx和test.txt都上载过来了)
10.1.docx gin-1 gin-1.go main.go test.txt

FInally:

不可思议吧,这么简单就能实现文件上传!但这就是框架的力量啊,让我们向框架的开发者致敬GoWeb-Gin 文件上载GoWeb-Gin 文件上载GoWeb-Gin 文件上载GoWeb-Gin 文件上载

稍微解释下上边那段代码:

1. go工程里应用gin框架,这个前面说过了

2.默认设置启动路由

3.设置路由内存上限

4.设置静态文件目录:当前目录和public目录(默认)

5.匿名函数响应客户端post请求,action为/upload

6.fetch请求的上载文件结构

7.SaveUploadedFile同名文件,也即执行上载过程

8.服务在8080端口监听客户端连接

好了,也很详细了,其它的咱们来日方长,慢慢研究。

你喜欢GO了吗?那你就GO去吧!

哈哈哈哈哈哈

GoWeb-Gin 文件上载的更多相关文章

  1. 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能

    Ajax文件上载 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 导入组件并准备静态脚本 <dependency> <groupId& ...

  2. &lbrack;ActionScript3&period;0&rsqb; 使用FileReferenceList处理多个文件上载

    package { import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; imp ...

  3. delphi中通过http控件上载文件的问题(紧急) 整理的CSDN 帖子

    http控件能不能实现post文件?要求效果就像普通的html中通过表单(form中<INPUT TYPE="FILE" NAME="FILE1" SIZ ...

  4. 上载和下载CSV文件

    sap中把txt .excel .文件上载到内表中,txt和csv速度最快. excel文件导出的csv是用,分隔符分隔的,如果单元格的文本中就有逗号,这样会和分隔符逗号混淆,最好abap产生csv文 ...

  5. &period;net项目中上传的图片或者文件太大 无法上传

    最近做项目的时候  用户提出要上传大图片  一张图片有可能十几兆  本来用的第三方的上传控件  有限制图片上传大小的设置 以前设置的是2M  按照用户的要求  以为直接将限制图片上传大小的设置改下就可 ...

  6. 【C&num;公共帮助类】FTPClientHelper帮助类,实现文件上传,目录操作,下载等动作

    关于本文档的说明 本文档使用Socket通信方式来实现ftp文件的上传下载等命令的执行 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集 ...

  7. PHP上传文件示例

    虽然大多数人认为Web只包含网页,但HTTP协议实际上可以传输任何文件,如office文档.PDF.可执行文件.AVI.压缩文件及各种其他文件类型.虽然FTP在历史上一直是向服务器上传文件的标准方式, ...

  8. IE8下服务端获取客户端文件的路径为C:&sol;fakePath问题的解决方案

    上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...

  9. asp&period;net 客户端上传文件全路径获取方法

    asp.net  获取客户端上传文件全路径方法: eg:F:\test\1.doc 基于浏览器安全问题,浏览器将屏蔽获取客户端文件全路径的方法,只能获取到文件的文件名,如果需要获取全路径则需要另想其他 ...

随机推荐

  1. easyUI数据表格datagrid之分页

    一.分页函数 /**========================================= * 分页函数 */function pagerFilter(data) { if(typeof ...

  2. drupal前端开发的第一点

    就是把admin/config/development/performance下面的选项全部去掉,方便作为一个匿名用户来访问,不用每次都drush cc all.

  3. UITextField实现左侧空出一定的边距

    就是通过uitextfield的leftview来实现的,同时要设置leftviewmode. 如果设置左右边距,需要再加上rightView功能 -(void)setTextFieldLeftPad ...

  4. 解决 linux &lbrack;Fedora&rsqb; 升级 导致VMware启动出现&quot&semi;before you can run vmware workstation&comma; serveral modules must be complied and loaded into the runing kernel&quot&semi; 而无法卸载

    解决: 开机启动 进入 升级之前的内核系统 然后 执行卸载 VMware 命令 # vmware-uninstall You have gotten this message because you ...

  5. &lbrack;HDOJ2572&rsqb;终曲

    Problem Description 最后的挑战终于到了!站在yifenfei和MM面前的只剩下邪恶的大魔王lemon一人了!战胜他,yifenfei就能顺利救出MM.Yifenfei和魔王lemo ...

  6. Weblogic10 集群配置

     1.预备知识 什么是Domain和Server Domain Domain是WebLogic Server实例的基本管理单元.所谓Domain就是,由配置为Administrator Serve ...

  7. Java list&period;remove&lpar; &rpar;方法需要注意的地方

    List<Integer> integerList = new ArrayList<>(); 当我们要移除某个Item的时候 remove(int position):移除某个 ...

  8. 550 5&period;7&period;1 Client does not have permissions to send as this sender

    收发邮件时出现以上这种情况,系统提示550 5.7.1 Client does not have permissions to send as this sender,这是什么原因赞成的呢? 活动目录 ...

  9. 22 Zabbix系统版本升级过程

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 22 Zabbix系统版本升级过程 Zabbix升级与其他相类似系统升级一样,前提一定做好备份,备 ...

  10. POJ 2706 Painter

    Painter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3157   Accepted: 1962 Descripti ...