Golang 下载文件
这里使用net/http下载文件,可以设置Content-Type(具体参考)告诉客户端返回的内容类型实际上是什么,实现不同方式的文件的下载。
示例一
package mainimport ("fmt""io/ioutil""net/http""net/url""os"
)func main() {http.HandleFunc("/", downloadHandler) // 设置访问路由http.ListenAndServe(":8080", nil)
}
func downloadHandler(w http.ResponseWriter, r *http.Request) {r.ParseForm() //解析url传递的参数,对于POST则解析响应包的主体(request body)//注意:如果没有调用ParseForm方法,下面无法获取表单的数据fileName := r.Form["filename"] //filename 文件名path := "/data/images/" //文件存放目录file, err := os.Open(path + fileName[0])if err != nil {fmt.Println(err)return}defer file.Close()content, err := ioutil.ReadAll(file)fileNames := url.QueryEscape(fileName[0]) // 防止中文乱码w.Header().Add("Content-Type", "application/octet-stream")w.Header().Add("Content-Disposition", "attachment; filename=\""+fileNames+"\"")if err != nil {fmt.Println("Read File Err:", err.Error())} else {w.Write(content)}
}
访问
http://localhost:8080/?filename=image.png
image.png 为你服务器上文件名称
如想直接显示图片文件或下载文件的话,也可以用http.ServeFile()
示例二
package mainimport ("fmt""io/ioutil""net/http""net/url""os"
)func main() {http.HandleFunc("/", downloadHandler) // 设置访问路由http.ListenAndServe(":8080", nil)
}
func downloadHandler(w http.ResponseWriter, r *http.Request) {r.ParseForm() //解析url传递的参数,对于POST则解析响应包的主体(request body)//注意:如果没有调用ParseForm方法,下面无法获取表单的数据fileName := r.Form["filename"] //filename 文件名path := "/data/images/" //文件存放目录http.ServeFile(w, r, path+fileName[0])
}
links
- 目录
Golang 下载文件相关推荐
- golang实现多协程下载文件(支持断点续传)
golang实现多协程下载文件(支持断点续传) 引言 写这篇文章主要是周末休息太无聊,看了看别人代码,发现基本上要么是多协程下载文件要么就只有单协程的断点续传,所以就试了试有进度条的多协程下载文件(支 ...
- golang gin下载文件
正常的后端 Gin 框架代码,使用 c.File() 文件来下载文件 package mainimport ("github.com/gin-gonic/gin" )func ma ...
- golang协程分段下载文件
目录 golang协程 加锁示例 golang协程分段下载文件 golang协程 golang协程分段下载文件,为了提升性能,更好的利用golang协程的特性,我们开始使用他测试一下我们的程序 gol ...
- Golang 使用http Client下载文件
之前使用beego的http库的时候,有的情况需要下载文件.beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的. 看了下beego的实现主要是使用了io.co ...
- golang 下载图片
想用golang下载图片,因为golang和其他语言相比较不用在复制那么多其他的文件. package mainimport ("bytes""fmt"&quo ...
- golang 下载第三方依赖
golang下载golang.org下的依赖时候 1.进入golang的github主页 https://github.com/golang 2.找到要下载的依赖 向下找,比如net 点击进入,然后复 ...
- go 访问url下载文件
访问URL下载文件到本地 func DownLoad(url string, path string) {// Get the dataresp, err := http.Get(url)if err ...
- 用python下载文件的若干种方法汇总
压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...
最新文章
- 面向对象程序设计上机练习一(函数重载)
- 错误:mysql foreign key errno 150
- Windows 8让程序员们忧心忡忡
- php 二叉树判断节点的位置,PHP实现判断二叉树是否对称的方法
- Python 爬虫 大量数据清洗 ---- sql语句优化
- 前端完全分离和前端不完全分离
- tomcat无法访问MySQL_JSP在tomcat服务器下无法连接MySql问题解决方法
- 第12秒做视频封面:阿里云视频截帧功能
- dd命令快速生成一个大文件
- 3.7.3 - Basic String Operations
- 佳能g2800加墨水后发生打印机错误5b00_备注!淳安县联想LJ4000D黑白激光打印机销售,县联想M7400Pro打印机长租...
- GIS 地图制作 学习总结
- Android模拟器 使用 Fiddler抓包
- 火电厂给水串级控制系统仿真
- 车载网络基础——预备篇
- 【自动驾驶摸爬滚打路】自动驾驶仿真软件SCANeR 001初相识
- 在nuxt中使用sass
- DataGrip 导入导出数据库设置
- 如何搭建一套有价值的团队知识管理体系?
- [转载] 毕业半年,我在富士康的日日夜夜