当前位置: > > > > 如何以 zip 形式提供文件?
如何以 zip 形式提供文件?
来源:stackoverflow
2024-04-25 20:00:33
0浏览
收藏
Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何以 zip 形式提供文件?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!
问题内容
我在通过 http 下载文件时遇到问题。使用我当前的代码,我可以轻松下载一个文件。
data, err := ioutil.readfile("test.docx")
if err != nil {
fmt.println(err)
}
log.fatal(http.listenandserve(":3001", http.handlerfunc(func(rw http.responsewriter, r *http.request) {
rw.header().set("content-disposition", "attachment; filename=test.docx")
http.servecontent(rw, r, "test.docx", time.now(), bytes.newreader(data))
})))
但我希望能够通过一个请求下载多个文件。像这样的事情:
data, err := ioutil.ReadFile("test.docx")
if err != nil {
fmt.Println(err)
}
data2, err := ioutil.ReadFile("test2.docx")
if err != nil {
fmt.Println(err)
}
log.Fatal(http.ListenAndServe(":3001", http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
writer := zip.NewWriter(rw)
create, _ := writer.Create("test.zip")
_, _ = create.Write(data)
_, _ = create.Write(data2)
rw.Header().Set("Content-Disposition", "attachment; filename=test.zip")
http.ServeContent(rw, r, "test.zip", time.Now(), /*What am I going to put here?*/)
如何将这些文件下载为 zip 格式?我做错了什么?
解决方案
我误解了代码中的一些概念,但我修复了它。现在可以了。这是工作代码:
data, err := ioutil.ReadFile("test.docx")
if err != nil {
fmt.Println(err)
}
data2, err := ioutil.ReadFile("test2.docx")
if err != nil {
fmt.Println(err)
}
log.Fatal(http.ListenAndServe(":3001", http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
buf := new(bytes.Buffer)
writer := zip.NewWriter(buf)
test, _ := writer.Create("test.docx")
_, _ = test.Write(data)
test2, _ := writer.Create("test2.docx")
_, _ = test2.Write(data2)
rw.Header().Set("Content-Disposition", "attachment; filename=test.zip")
rw.Header().Set("Content-Type", "application/zip")
_ = writer.Close()
http.ServeContent(rw, r, "test.zip", time.Now(), bytes.NewReader(buf.Bytes()))
})))
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持米云!更多关于Golang的相关知识,也可关注米云公众号。
