登录
首页 >  Golang >  Go问答

Golang返回"不支持应用程序/八位字节流文件类型的CSV文件"

来源:stackoverflow

时间:2024-02-07 17:00:22 418浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《Golang返回"不支持应用程序/八位字节流文件类型的CSV文件"》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

在对 golang 中的端点进行 api 调用时,我将 csv 文件传递​​为:

payload := &bytes.buffer{}
writer := multipart.newwriter(payload)

file, _ := os.open("temp.csv")
defer file.close()
part3,
    errfile3 := writer.createformfile("file", filepath.base("temp.csv"))
_, errfile3 = io.copy(part3, file)
if errfile3 != nil {
    fmt.println(errfile3)
    return
}
_ = writer.close()
req, _ := http.newrequest("post", url, payload)
req.header.set("content-type", writer.formdatacontenttype())

但它正在返回:

File with content-type application/octet-stream is not supported

但是从 postman 发出相同的呼叫时它会成功吗?有人遇到过这种情况吗?

有没有办法在 golang 中将内容类型作为“text/csv”传递给文件?


正确答案


要设置内容类型,请直接调用 createpart 方法而不是 createformfile 辅助函数:

h := make(textproto.MIMEHeader)
h.Set("Content-Disposition",`form-data; name="file"; filename="temp.csv"`)
h.Set("Content-Type", "text/csv")
part3, errFile3 := writer.CreatePart(h)

如果您不使用问题中所示的字符串文字,请转义字段名称和文件名。有关如何进行转义的示例,请参阅 createformfile 实现。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>