这里使用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 下载文件相关推荐

  1. golang实现多协程下载文件(支持断点续传)

    golang实现多协程下载文件(支持断点续传) 引言 写这篇文章主要是周末休息太无聊,看了看别人代码,发现基本上要么是多协程下载文件要么就只有单协程的断点续传,所以就试了试有进度条的多协程下载文件(支 ...

  2. golang gin下载文件

    正常的后端 Gin 框架代码,使用 c.File() 文件来下载文件 package mainimport ("github.com/gin-gonic/gin" )func ma ...

  3. golang协程分段下载文件

    目录 golang协程 加锁示例 golang协程分段下载文件 golang协程 golang协程分段下载文件,为了提升性能,更好的利用golang协程的特性,我们开始使用他测试一下我们的程序 gol ...

  4. Golang 使用http Client下载文件

    之前使用beego的http库的时候,有的情况需要下载文件.beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的. 看了下beego的实现主要是使用了io.co ...

  5. golang 下载图片

    想用golang下载图片,因为golang和其他语言相比较不用在复制那么多其他的文件. package mainimport ("bytes""fmt"&quo ...

  6. golang 下载第三方依赖

    golang下载golang.org下的依赖时候 1.进入golang的github主页 https://github.com/golang 2.找到要下载的依赖 向下找,比如net 点击进入,然后复 ...

  7. go 访问url下载文件

    访问URL下载文件到本地 func DownLoad(url string, path string) {// Get the dataresp, err := http.Get(url)if err ...

  8. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  9. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...

最新文章

  1. 面向对象程序设计上机练习一(函数重载)
  2. 错误:mysql foreign key errno 150
  3. Windows 8让程序员们忧心忡忡
  4. php 二叉树判断节点的位置,PHP实现判断二叉树是否对称的方法
  5. Python 爬虫 大量数据清洗 ---- sql语句优化
  6. 前端完全分离和前端不完全分离
  7. tomcat无法访问MySQL_JSP在tomcat服务器下无法连接MySql问题解决方法
  8. 第12秒做视频封面:阿里云视频截帧功能
  9. dd命令快速生成一个大文件
  10. 3.7.3 - Basic String Operations
  11. 佳能g2800加墨水后发生打印机错误5b00_备注!淳安县联想LJ4000D黑白激光打印机销售,县联想M7400Pro打印机长租...
  12. GIS 地图制作 学习总结
  13. Android模拟器 使用 Fiddler抓包
  14. 火电厂给水串级控制系统仿真
  15. 车载网络基础——预备篇
  16. 【自动驾驶摸爬滚打路】自动驾驶仿真软件SCANeR 001初相识
  17. 在nuxt中使用sass
  18. DataGrip 导入导出数据库设置
  19. 如何搭建一套有价值的团队知识管理体系?
  20. [转载] 毕业半年,我在富士康的日日夜夜

热门文章

  1. 高通导航器软件开发包使用指南(17)
  2. iOS开发 - 打开文件后进行文件分享(QLPreviewController)
  3. 总结最近关于pi的一些问题
  4. 【学习笔记】MATLAB与数学建模——粒子群算法(未完成)
  5. oracle clusterware11g,Oracle Clusterware 10g/11g 进程详解
  6. 论文查重费用如何降低?
  7. BZOJ 1009 GT考试 (AC自动机 + 矩阵乘法加速dp)
  8. 语音合成应用场景之一:配音平台总结
  9. Servlet和MySQL基本语法概述
  10. 微信小程序渲染后端返回的图片