登录
首页 >  Golang >  Go问答

文件传输作为响应的步骤

来源:stackoverflow

时间:2024-02-22 18:18:18 220浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《文件传输作为响应的步骤》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我正在构建一个 rest 应用程序,其中客户端发送带有一些参数的 get 请求,并在服务器端 api 处理它并创建一个 tar 文件。最后,它应该将此 tar 文件发送到客户端,就像基于查询自动下载一样。这里有什么帮助吗? 创建 tar 文件后我陷入困境,不知道如何将此文件发送到客户端(例如自动下载)

模拟我的问题的示例代码

func main() {
    http.HandleFunc("/", someHandle)

    port := ":8080"
    err := http.ListenAndServe(port, nil)
    if err != nil {
        log.Println(err)
    }

 }

func someHandle(res http.ResponseWriter, req *http.Request){
     ...
     ... 
     some code 
     ...
     
     file, err := createFile(filePath)
     ...
     //Now I have to send this file as response, any thoughts?
}

解决方案


我想 http.ServeFile 就是您要找的。​​p>

这是一个工作示例:

package main

    import (
        "log"
        "net/http"
    )
    
    type Server struct {
        listenPort string
    }
    
    func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        router := http.NewServeMux()
    
        router.HandleFunc("/download", s.downloadHandler)
        router.ServeHTTP(w, r)
    }
    
    func (s *Server) downloadHandler(w http.ResponseWriter, r *http.Request) {
        http.ServeFile(w,r, "file.tar.xz")
    }
    
    func main(){
        s := &Server{listenPort: ":8080"}
    
        if err := http.ListenAndServe(s.listenPort, s); err != nil {
            log.Fatalf("could not listen on port %s: %v", s.listenPort, err)
        }
    }

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>