http.ServeFile()-客户端上的文件名问题

时间:2019-06-07 13:59:39

标签: go

有一个serveFile问题,我无法在客户端上获取正确的文件名,这是代码:

func serveFile(w http.ResponseWriter, r *http.Request,path string, filename string){
  http.ServeFile ( w,r,path+"\\"+filename)
}


    // incoming API requests
    func (gv *GlobalVars) ServeHTTP(w http.ResponseWriter, r *http.Request) {

        switch r.URL.Path {
        case "/GetFile":
        keys := r.URL.Query()
        urlfilename := keys.Get("filename") 
        serveFile (w,r,"c://files", urlfilename)
       }
}

如果我尝试使用Curl测试下载:

curl -O -J localhost:8888/GetFile?filename=index.html

我希望它是我的c:\ files \ folder中的index.html-但是执行curl时得到的文件名是:

GetFile_filename=index.html

我还尝试了serveContent并将“ filename =“手动放入,但结果与http.serveFile()相同

有人知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

如果有人遇到了同样的问题,就像阿德里安(Adrian)注意到它与Golang无关-而是它的卷曲-在本地主机上进行测试时,您必须在网址路径中指定http://,如果仅使用“本地主机:8888 /....”

curl -O -J -L http://localhost:8888/GetFile?filename=index.html