Go上传文件
来源:互联网 发布:电子白板课件制作软件 编辑:程序博客网 时间:2024/06/05 16:23
简介
Go提供的net/http
和mime/multipart
两个包可以很容易的实现http文件上传。
客户端
package mainimport ( "bytes" "io" "log" "mime/multipart" "net/http" "os")func main() { // 创建表单文件 // CreateFormFile 用来创建表单,第一个参数是字段名,第二个参数是文件名 buf := new(bytes.Buffer) writer := multipart.NewWriter(buf) formFile, err := writer.CreateFormFile("uploadfile", "test.jpg") if err != nil { log.Fatalf("Create form file failed: %s\n", err) } // 从文件读取数据,写入表单 srcFile, err := os.Open("test.jpg") if err != nil { log.Fatalf("%Open source file failed: s\n", err) } defer srcFile.Close() _, err = io.Copy(formFile, srcFile) if err != nil { log.Fatalf("Write to form file falied: %s\n", err) } // 发送表单 contentType := writer.FormDataContentType() writer.Close() // 发送之前必须调用Close()以写入结尾行 _, err = http.Post("http://localhost:9090/upload", contentType, buf) if err != nil { log.Fatalf("Post failed: %s\n", err) }}
服务器端
package mainimport ( "io" "log" "net/http" "os")func main() { http.HandleFunc("/upload", uploadHandle) log.Fatal(http.ListenAndServe(":9090", nil))}func uploadHandle(w http.ResponseWriter, r *http.Request) { // 根据字段名获取表单文件 formFile, header, err := r.FormFile("uploadfile") if err != nil { log.Printf("Get form file failed: %s\n", err) return } defer formFile.Close() // 创建保存文件 destFile, err := os.Create("." + r.URL.Path + "/" + header.Filename) if err != nil { log.Printf("Create failed: %s\n", err) return } defer destFile.Close() // 读取表单文件,写入保存文件 _, err = io.Copy(destFile, formFile) if err != nil { log.Printf("Write file failed: %s\n", err) return }}
1 0
- Go上传文件
- (go) 上传文件elipse专用
- GO语言实现文件上传
- (go) 上传文件ta3 专用(无多级目录)
- Go实战--golang实现静态文件服务器(文件查看,文件上传,文件下载)
- Go图片上传
- Go实现图片上传
- Go实战--golang上传文件到七牛云对象存储(github.com/qiniu/api.v7)
- go语言使用sftp包上传文件和文件夹到远程服务器
- 文件上传---文件上传
- GO 语言 读写文件
- Go 复制文件
- go 语言文件操作
- go语言 文件读写
- go语言文件操作
- Go文件操作
- go语言文件汇总
- go文件操作
- Java多态的应用_模板模式
- CSS常用属性样式表(1)
- Vue开发小实践--身份查询系统
- poj3252Round Numbers(数学问题)
- activemq订阅模式和队列模式的Demo讲解(maven,spring管理)(史上最全版本)
- Go上传文件
- 欢迎使用CSDN-markdown编辑器
- iOS波纹动画
- 多线程
- 盒模型 块级元素内联元素
- Android service
- C
- 简单异常,简单处理
- JQuery常用代码片段收集