当前位置: 首页 > news >正文

go webapi上传文件

一、导入依赖

import "net/http"

我这里用到了Guid所以安装依赖

go get github.com/google/uuid

二、main.go

package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""path/filepath"
)
import _ "github.com/go-sql-driver/mysql"import "net/http"
import "encoding/json"
import "io/ioutil"
import "github.com/google/uuid"type Student struct {Name stringSex  string
}type ResponseData struct {Status  string `json:"status"`Message string `json:"message"`
}func (student Student) show() {fmt.Printf("Name:%s Sex:%s\r\n", student.Name, student.Sex)
}
func uploadFile(w http.ResponseWriter, r *http.Request) {w.Header().Set("Content-Type", "application/json")r.ParseMultipartForm(32 << 20) // 设置最大内存为32MBfile, handler, err := r.FormFile("file")if err != nil {http.Error(w, err.Error(), http.StatusBadRequest)return}defer file.Close()data, err := ioutil.ReadAll(file)if err != nil {http.Error(w, err.Error(), http.StatusInternalServerError)return}ext := filepath.Ext(handler.Filename)// 这里可以将文件数据保存到服务器err2 := ioutil.WriteFile(uuid.NewString()+ext, data, 0644)if err2 != nil {return}response := ResponseData{Status:  "success",Message: "Hello, this is a JSON response",}jsonResponse, err3 := json.Marshal(response)if err3 != nil {http.Error(w, err3.Error(), http.StatusInternalServerError)return}w.Write(jsonResponse)
}
func main() {http.HandleFunc("/upload", uploadFile)http.ListenAndServe("0.0.0.0:5000", nil)
}
func saveexcel() {excelPath := "students.xlsx"xlFile, err := xlsx.OpenFile(excelPath)if err != nil {fmt.Printf("Error opening Excel file: %s\n", err)return}sheet := xlFile.Sheets[0]var students []Studenti := 0for _, row := range sheet.Rows {name := row.Cells[0].String()sex := row.Cells[1].String()fmt.Printf("name:%s sex:%s \r\n", name, sex)students = append(students, Student{Name: name, Sex: sex})i++}for _, student := range students {student.show()}fmt.Println("数据库操作")dsn := "root:123456@tcp(192.168.31.132:3306)/demo"db, err := sqlx.Open("mysql", dsn)if err != nil {log.Fatal(err)}for i, student := range students {if i == 0 {continue}db.NamedExec("insert into students(Name,Sex) values(:name,:sex)", student)}var studentMaps []*Studenterr = db.Select(&studentMaps, `select name,sex from students where name=?`, "张三")if err != nil {log.Fatal(err)}for _, student := range studentMaps {student.show()}
}

三、postman测试

curl --location --request POST 'http://127.0.0.1:5000/upload' \
--form 'file=@"/C:/xxxx图片/tos.jpg"'

运行效果:

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • centos7安装Redis单机版
  • PySimpleGUI:简化 Python 中的 GUI 开发
  • uniapp实现在表单中展示多个选项,并且用户可以选择其中的一个或多个选项
  • ARM/Linux嵌入式面经(三九):中科驭数
  • 89个H5小游戏源码
  • 大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
  • python爬虫bs4库的用法
  • SpringBoot集成阿里easyexcel(一)基础导入导出
  • 2025考研倒计时 考研时间公布了 你准备好复习冲刺了吗?
  • 直播平台美颜功能开发方案:基于视频美颜SDK的集成详解
  • Java接口和抽象类的区别
  • 计算机组成原理(笔记5原码和补码的乘法以及直接补码阵列乘法器 )
  • 【Kubernetes】常见面试题汇总(二十八)
  • 【每日一题】LeetCode 2306.公司命名(位运算、数组、哈希表、字符串、枚举)
  • 技能深化与软实力双提升
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Date型的使用
  • java取消线程实例
  • JS函数式编程 数组部分风格 ES6版
  • laravel5.5 视图共享数据
  • Linux gpio口使用方法
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 我看到的前端
  • 智能合约开发环境搭建及Hello World合约
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 积累各种好的链接
  • 选择阿里云数据库HBase版十大理由
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​字​节​一​面​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #define,static,const,三种常量的区别
  • #if和#ifdef区别
  • (06)Hive——正则表达式
  • (c语言)strcpy函数用法
  • (java)关于Thread的挂起和恢复
  • (k8s)kubernetes 部署Promehteus学习之路
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot教学评价 毕业设计 641310
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .form文件_SSM框架文件上传篇
  • .gitignore文件---让git自动忽略指定文件
  • .htaccess 强制https 单独排除某个目录
  • .net Application的目录
  • .NET Remoting学习笔记(三)信道
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @GetMapping和@RequestMapping的区别