【问题标题】:File Upload Failed using SIRIS使用 SIRIS 上传文件失败
【发布时间】:2025-02-26 16:25:02
【问题描述】:

我想使用 SIRIS 和 Postman 将文件上传到服务器。

围棋程序

package main

import (
    "github.com/go-siris/siris"
)

func main() {
    app := siris.New()
    app.Post("/", handleFileUpload)
    app.Run(siris.Addr(":8080"))
}

func handleFileUpload(ctx siris.Context) {
    ctx.Writef("Hello<br/>")
    file, info, err := ctx.FormFile("filee")
    if err != nil {
        ctx.StatusCode(iris.StatusInternalServerError)
        ctx.HTML("Error while uploading: <b>" + err.Error() + "</b>")
        return
    }
    defer file.Close()
    fn := info.Filename
    ctx.Writef("File Name: " + fn)
}

邮递员

但是 Postman 只能得到错误信息:

你好
上传时出错:request Content-Type is not multipart/form-data

为什么会这样?

【问题讨论】:

    标签: http go file-upload go-iris


    【解决方案1】:

    要正确处理文件上传html表单应该有属性

    enctype="multipart/form-data"
    

    https://www.w3schools.com/php/php_file_upload.asp

    附:我不建议使用 Iris。

    【讨论】:

    • 为什么不推荐使用 Iris?
    • @Kin 阅读 .news.ycombinator.com/item?id=11976798florinpatan.ro/2016/10/… 。虽然这些文章比较陈旧,有些部分可能已经过时,但鸢尾花作者确实是个问题很大的人。您可以在 Google 上搜索“iris kataras”并获取更多信息。
    • 是的。许多开发人员不喜欢作者进行交易的方式。所以不太可能有一个围绕框架的强大社区。因此,开发和错误修复将非常缓慢并且没有适当的审查。这样一来,将这个框架作为新项目的基础就变得非常危险。 Golang 社区已经开发了很多没有这种包袱的替代方案。
    • 您建议使用哪种快速的 Go Web 框架来编程端 API?
    • 您可以试试echogin。此外,您可能根本不使用框架 - go http 库非常好,并且几乎具有所有必需的功能。