【发布时间】:2018-05-15 01:34:57
【问题描述】:
我有一个将 zip 文件发送到服务器的应用程序。然后对 zip 进行操作,并在响应中发回一个新的 zip。
问题是发回的响应具有application/octet-stream 而不是application/zip 消息的mime。
我认为这就是 archive/zip 无法打开生成的 zip 并得到 zip: not a valid zip file 的原因。
在检索 zip 文件时,我有什么方法可以更改 mime?
我获取 zip 的代码:
func GetZipFromServer(zipname string) {
////////////////////////////////////////////////////
// Open local zip file
file, err := os.Open(zipname + ".zip")
log1.Check(err, "File open failed")
defer file.Close()
stat, err := file.Stat()
log1.Check(err, "Stat failed")
fmt.Println(stat.Size())
////////////////////////////////////////////////////
// Get new zip from server
url := "http://some_server123.com/rest/"
res, err := http.Post(url, "application/zip", file)
log1.Check(err, "Response failed")
////////////////////////////////////////////////////
// Save new zip from server as file
f, err := os.Create(zipname + ".html.zip")
log1.Check(err, "Cannot create file")
err = res.Write(f)
log1.Check(err, "Cannot write file")
err = f.Close()
log1.Check(err, "Cannot close file")
}
【问题讨论】:
-
您需要在服务器上处理
.zip时设置标头。 -
如果我无权访问服务器,是否有办法这样做?
-
很遗憾没有; mime 必须设置在服务器端。
-
这个问题与Content-Type响应头的值无关。
标签: http go http-headers mime