最近在開發中遇到了一個奇怪的問題:使用a標簽下載的文件只是一段json字符串。
經過了一番調查,發現是在后端接口返回的時候,Content-Type的值被設置為了application/json,導致瀏覽器默認以json格式解析,而非下載文件。
// 以下是示例后端代碼: func fileDownloadHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") filename := "example.json" w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename)) w.Write([]byte(`{"foo": "bar"}`)) }
解決的方案也很簡單,只需指定Content-Type為application/octet-stream,即可強制瀏覽器將文件下載。
// 修改后的代碼: func fileDownloadHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/octet-stream") filename := "example.json" w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename)) w.Write([]byte(`{"foo": "bar"}`)) }
以上,希望對大家有所幫助。
上一篇extjs json數據
下一篇html qq農場代碼