博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go中gin框架支持的简单上传下载读取csv等文件
阅读量:2071 次
发布时间:2019-04-29

本文共 1911 字,大约阅读时间需要 6 分钟。

1.运行main函数

2.尝试上传 下载 

package mainimport (	"bufio"	"encoding/csv"	"fmt"	"github.com/gin-gonic/gin"	"io"	"net/http"	"os")const (	SR_File_Max_Bytes = 1024 * 1024 * 2)func main() {	router := gin.Default()	//本地上传到服务器 csv格式,其他类似 读取内容	router.GET("/upload", uploadFile)	//下载文件 读取内容	router.GET("/download/read",downloadReadFile)	//下载文件 写内容	router.GET("/download/write",downloadWriteFile)	// 默认启动的是 8080端口,也可以自己定义启动端口	router.Run()}func uploadFile(c *gin.Context){	rFile, err := c.FormFile("file")	if err != nil {		c.String(400, "文件格式错误")		return	}	if rFile.Size > SR_File_Max_Bytes {		c.String(400, "文件大小超过2M")		return	}	file, err := rFile.Open()	if err != nil {		c.String(400, "文件格式错误")		return	}	defer file.Close()	reader := csv.NewReader(bufio.NewReader(file))	for {		line, err := reader.Read()		if err!=nil{			c.String(400, err.Error())			return		}		//line 就是每一行的内容		fmt.Println(line)		//line[0] 就是第几列		fmt.Println(line[0])	}}func downloadReadFile(c *gin.Context){	//http下载地址 csv	csvFileUrl := c.PostForm("file_name")	res, err := http.Get(csvFileUrl)	if err != nil {		c.String(400, err.Error())		return	}	defer res.Body.Close()	//读取csv	reader := csv.NewReader(bufio.NewReader(res.Body))	for {		line, err := reader.Read()		if err == io.EOF {			break		} else if err != nil {			c.String(400, err.Error())			return		}		//line 就是每一行的内容		fmt.Println(line)		//line[0] 就是第几列		fmt.Println(line[0])	}}func downloadWriteFile(c *gin.Context){	//写文件	var filename = "./output1.csv"	if !checkFileIsExist(filename){		file, err := os.Create(filename) //创建文件		if err!=nil{			c.String(400, err.Error())			return		}		buf := bufio.NewWriter(file) //创建新的 Writer 对象		buf.WriteString("test")		buf.Flush()		defer file.Close()	}	//返回文件流	c.File(filename)}//判断文件是否存在  存在返回 true 不存在返回falsefunc checkFileIsExist(filename string) bool {	var exist = true	if _, err := os.Stat(filename); os.IsNotExist(err) {		exist = false	}	return exist}

基本的读写操作都有了

转载地址:http://pypmf.baihongyu.com/

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>