gpt4 book ai didi

Golang 在下载时停止导航

转载 作者:行者123 更新时间:2023-12-01 22:22:37 24 4
gpt4 key购买 nike

每当我使用 Go 从我的网站进行大量下载时,它会阻止我在下载的同时在同一个浏览器中在我的网站上导航或执行任何其他操作。这发生在 Firefox、chrome 和 Safari 上,这让我认为这是一个 conf 问题。

去环境

GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build062753082=/tmp/go-build"

为此使用默认的 GO Web 服务器 net/http。

编辑:

抱歉忘记了下载代码
func FunctionName(res http.ResponseWriter, req *http.Request, p httprouter.Params) {
defer req.Body.Close()
setSecurityHeaders(res)
req.ParseForm()
id := p.ByName("id")

incletter, err := GetIncLetterById(bson.ObjectIdHex(id))
if err != nil {
jsonResponse(res, map[string]string{"status": "error", "message": "."})
return
}

bytes, filename := incletter.GetFileBytes()

res.Header().Set("Content-Disposition", "attachment; filename=\""+filename+"\"")
res.Header().Set("Content-type", "application/pdf")
res.Header().Set("Content-Length", strconv.Itoa(len(bytes)))
res.Write(bytes)
}

最佳答案

您的 header 看起来不错(尽管我认为正确的内容类型表示法是正确的大小写(“Content-Type”)。如果这只发生在大文件上,我怀疑这意味着整个文件在被流式传输到客户端。要解决此问题,您可以使用以下命令:

byteSlice, filename := incletter.GetFileBytes()
byteStream := bytes.NewReader(byteSlice)

res.Header().Set("Content-Disposition", "attachment; filename=\""+filename+"\"")
res.Header().Set("Content-type", "application/pdf")
res.Header().Set("Content-Length", strconv.Itoa(len(bytes)))

io.Copy(res, byteStream)

这将实质上从读取器接口(interface)流向写入器,直接流向客户端。

关于Golang 在下载时停止导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62139712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com