在Go語言中,我們經常需要設定或還原HTTP回應的檔案頭。透過設定文件頭,我們可以控制瀏覽器或客戶端如何處理回應內容。那麼,在Go中,如何從回應正文設定或恢復檔案頭呢?在本文中,php小編新一將為您詳細介紹這個問題的解決方案。無論您是新手還是有經驗的開發者,本文都將為您提供有用的信息和範例程式碼,幫助您輕鬆應對這個問題。讓我們開始吧!
我在恢復透過 GET 請求的回應發送的多個檔案頭以進行壓縮時遇到一些問題。這裡的主要問題是我想擺脫 Go 為文件設置的預設日期“1979 年 11 月 30 日”(文件壓縮後),而不是那樣,我希望顯示當前日期。但是我不知道如何修改甚至從文件中檢索標頭,因為我從回應正文中接收到 io.ReadCloser 類型。
這是當前程式碼
archive := zip.NewWriter(w) attachment := "attachment; filename=someZipFile.zip") c.Writer.Header().Set("Content-Disposition", attachment) for i := 0; i < len(bodies); i++ { // bodies are response bodies, corresponding to "downloaded" files defer bodies[i].Close() fmt.Println(filenames[i]) w, err := archive.Create("someZipFile/" + filenames[i]) if err != nil { fmt.Println("File couldn't be created") return true } if _, err := io.Copy(w, bodies[i]); err != nil { fmt.Println("File couldn't be written") return true } } archive.Close()
我想澄清我能做什麼,是建立新標頭還是編輯現有標頭,如果是前者,如何取得檔案標頭。在最壞的情況下,找出一個全新的解決方案。
Create 是呼叫 CreateHeader 的輔助方法。直接呼叫CreateHeader指定檔案元資料:
w, err := archive.CreateHeader(&zip.FileHeader{ Name: "someZipFile/" + filenames[i], Method: zip.Deflate, Modified: time.Now(), })
更改呼叫以建立存檔文件,如下所示。按原樣使用問題中的其他程式碼。
以上是如何在 Go 中從響應正文設定或恢復文件頭?的詳細內容。更多資訊請關注PHP中文網其他相關文章!