登录
首页 >  Golang >  Go问答

如何在 Go 中获取多部分格式文件的文件名?

来源:stackoverflow

时间:2024-03-08 15:45:21 326浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《如何在 Go 中获取多部分格式文件的文件名?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我正在尝试上传一个多部分表单,其中包含一个文件和一些其他数据。我知道我使用 FormFile 执行的文件的标签名称,但我也想获取文件的名称。我不知道该怎么做?


解决方案


在名为 form.html 的文件中给出这样的简单表单:




    
    file upload example



    

我可以使用 post 请求的 *multipart.reader 结构获取上传文件的文件名,就像在名为 main.go 的文件中一样:

package main

import (
    "io"
    "log"
    "net/http"
)

func serveForm(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "form.html")
}

func handleFormSubmit(w http.ResponseWriter, r *http.Request) {
    reader, err := r.MultipartReader()
    if err != nil {
        log.Fatalf("failed to create multipart-reader: %s", err)
    }

    for p, err := reader.NextPart(); err != io.EOF; p, err = reader.NextPart() {
        log.Println(p.FileName())  // This line in particular is what you're looking for.
    }
}

func main() {
    http.HandleFunc("/", serveForm)
    http.HandleFunc("/form-endpoint", handleFormSubmit)
    if err := http.ListenAndServe(":8000", nil); err != nil {
        log.Fatalf("failed to start server: %s", err)
    }
}

这是文档中了解有关 multipart/form-data 的更多信息的一个很好的起点阅读:https://golang.org/pkg/net/http/#Request.MultipartReader

好了,本文到此结束,带大家了解了《如何在 Go 中获取多部分格式文件的文件名?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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