golang实现http server提供文件下载功能
程序员文章站
2022-03-18 17:21:39
简介go(又称golang)是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(robert griesemer),罗勃·派克(rob pike)及肯·...
简介
go(又称golang)是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
罗伯特·格瑞史莫(robert griesemer),罗勃·派克(rob pike)及肯·汤普逊(ken thompson)于2007年9月开始设计go,稍后ian lance taylor、russ cox加入项目。go是基于inferno操作系统所开发的。go于2009年11月正式宣布推出,成为开放源代码项目,并在linux及mac os x平台上进行了实现,后来追加了windows系统下的实现。在2016年,go被软件评价公司tiobe 选为“tiobe 2016 年最佳语言”。 目前,go每半年发布一个二级版本(即从a.x升级到a.y)。
go就是golang 全名是 golang 简称go语言
golang实现http server提供文件下载功能,具体代码如下所示:
func filedownload(w http.responsewriter, r *http.request) { filename := get_filename_from_request(r) file, _ := os.open(filename) defer file.close() fileheader := make([]byte, 512) file.read(fileheader) filestat, _ := file.stat() w.header().set("content-disposition", "attachment; filename=" + filename) w.header().set("content-type", http.detectcontenttype(fileheader)) w.header().set("content-length", strconv.formatint(filestat.size(), 10)) file.seek(0, 0) io.copy(w, file) return }
ps:下面看下golang最简单的http server
简单的hello world
package main import ( "fmt" "io" "net/http" ) func main() { http.handlefunc("/", helloworld) e:=http.listenandserve(":8888",nil) if e!=nil{ fmt.println(e.error()) } } func helloworld(w http.responsewriter, r *http.request) { str:="hello world" n,e:=io.writestring(w, str) if e!=nil{ fmt.println(e.error()) } else { fmt.println(n," " ,len(str)) } }
总结
以上所述是小编给大家介绍的golang实现http server提供文件下载功能,希望对大家有所帮助!