GoWeb-Gin 文件上载
前些日子,我们Node.JS了一把。
如今,我们还是回到我们伟大的GO来吧
今天,带领大家继续Golang的啦,而且是个上传文件的例子
先给大家看结果
1. 如果是windows端,你需要安装postman,这个是谷歌浏览器的插件,模拟HTTP客户端。我下载的可以独立使用

记得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")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:
不可思议吧,这么简单就能实现文件上传!但这就是框架的力量啊,让我们向框架的开发者致敬



稍微解释下上边那段代码:
1. go工程里应用gin框架,这个前面说过了
2.默认设置启动路由
3.设置路由内存上限
4.设置静态文件目录:当前目录和public目录(默认)
5.匿名函数响应客户端post请求,action为/upload
6.fetch请求的上载文件结构
7.SaveUploadedFile同名文件,也即执行上载过程
8.服务在8080端口监听客户端连接
好了,也很详细了,其它的咱们来日方长,慢慢研究。
你喜欢GO了吗?那你就GO去吧!
哈哈哈哈哈哈
GoWeb-Gin 文件上载的更多相关文章
- 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能
Ajax文件上载 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 导入组件并准备静态脚本 <dependency> <groupId& ...
- [ActionScript3.0] 使用FileReferenceList处理多个文件上载
package { import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; imp ...
- delphi中通过http控件上载文件的问题(紧急) 整理的CSDN 帖子
http控件能不能实现post文件?要求效果就像普通的html中通过表单(form中<INPUT TYPE="FILE" NAME="FILE1" SIZ ...
- 上载和下载CSV文件
sap中把txt .excel .文件上载到内表中,txt和csv速度最快. excel文件导出的csv是用,分隔符分隔的,如果单元格的文本中就有逗号,这样会和分隔符逗号混淆,最好abap产生csv文 ...
- .net项目中上传的图片或者文件太大 无法上传
最近做项目的时候 用户提出要上传大图片 一张图片有可能十几兆 本来用的第三方的上传控件 有限制图片上传大小的设置 以前设置的是2M 按照用户的要求 以为直接将限制图片上传大小的设置改下就可 ...
- 【C#公共帮助类】FTPClientHelper帮助类,实现文件上传,目录操作,下载等动作
关于本文档的说明 本文档使用Socket通信方式来实现ftp文件的上传下载等命令的执行 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集 ...
- PHP上传文件示例
虽然大多数人认为Web只包含网页,但HTTP协议实际上可以传输任何文件,如office文档.PDF.可执行文件.AVI.压缩文件及各种其他文件类型.虽然FTP在历史上一直是向服务器上传文件的标准方式, ...
- IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案
上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...
- asp.net 客户端上传文件全路径获取方法
asp.net 获取客户端上传文件全路径方法: eg:F:\test\1.doc 基于浏览器安全问题,浏览器将屏蔽获取客户端文件全路径的方法,只能获取到文件的文件名,如果需要获取全路径则需要另想其他 ...
随机推荐
- 常见的压缩文件格式案例tarZ
在AIX上最常见的压缩文件就是.tar压缩格式的文件了. 而除了tar文件以外,有时会遇到数据是用其它的压缩文件格式,所以偶顺手整理了一些常见的压缩文件格式,在AIX要怎么解压缩 : 一. .tar ...
- python中的一个现象,db.commit和db.commit()
假设有一个表,有自增字段,在开发环境中(sublime/Liclipse等)执行insert语句时,如果调用db.commit,那么数据库中不会有这条记录,但也不报错,再次插入成功时,自增自段加1. ...
- [No0000D2]ClearCSharp编程清理脚本批处理bat
for /f "tokens=*" %%a in ('dir obj /b /ad /s ^|sort') do rd "%%a" /s/q for /f &q ...
- class="no-js"
这是什么意思?看了外网的解释,比较明白了.(When Modernizr runs, it removes the "no-js" class and replaces it wi ...
- Oracle的一些经典SQL面试题
实例1:测试数据: create table nba( team varchar2(20), year number(4) ) SQL> select * from nba; TEAM ...
- 如何使用ffmpeg
https://blog.csdn.net/minger1202/article/details/52468986 解码 https://www.jianshu.com/p/c6cfe2edd083 ...
- java mvc spring boot
spring mvchttp://www.cnblogs.com/wcf6676/p/5333352.html 利用mybatis-generator自动生成代码http://www.cnblogs. ...
- day2_python基础
1.变量: 用来存东西的,左边是名字,右边是值 2.python中的单引号.双信号.三引号 单引号和双引号和三引号没什么区别,用哪个都可以,如果定义字符串里面如果有单引号,则外面用双引号;如果字符串里 ...
- 新兴的API(fileReader、geolocation、web计时、web worker)
requestAnimationFrame() 每次浏览器重绘之前会调用这个方法!!! 它接收一个参数,就是回调函数: 它可以保证在最佳的间隔时间调用传入的回调函数,以达到让屏幕产生最流畅的动画效果. ...
- gpg签名用法
– 在CentOS 6上生成公钥/私钥对 [root@localhost ~]# gpg --gen-key gpg (GnuPG) ; Copyright (C) Free Software Fou ...