猿问

如何使用 Golang 获取发布的二进制数据的文件名?

我使用 Postman REST API 客户端将一个 csv 文件作为二进制文件发布。我需要获取上传文件的文件名。

这是一个将 csv 文件作为二进制数据发布并将二进制数据存储为 csv 文件的简单示例。


package main


import (   //"fmt"

           "net/http"

           "os"

           "io"

           "log"

           "github.com/gorilla/mux"

       )


func uploadData(w http.ResponseWriter, req *http.Request) {

    file, err := os.Create("hello.csv")

    _, err = io.Copy(file, req.Body)

    _ = err

}


func main(){

  router := mux.NewRouter()

  router.HandleFunc("/parse", uploadData).Methods("POST")

  log.Fatal(http.ListenAndServe(":8000", router))

}


MMTTMM
浏览 169回答 2
2回答

ABOUTYOU

您可以使用编码,例如form-data,其中包括文件名以使用邮递员上传文件。这将帮助您向服务器发送multipart/form-data请求。之后,您可以从服务器端提取文件名。从服务器端func uploadData(w http.ResponseWriter, req *http.Request) {    _, header, _ := req.FormFile("demo")    fmt.Println(header.Filename)}

潇湘沐

因为,没有与 HTTP 请求正文关联的文件名。如果要获取文件名,则必须在 URL 中发送文件名。package mainimport (              "net/http"           "os"           "io"           "log"           "github.com/gorilla/mux"       )func uploadData(w http.ResponseWriter, req *http.Request) {    params := mux.Vars(req)    file, err := os.Create(params["fileName"])    _, err = io.Copy(file, req.Body)    if err!=nil{      log.Printf("Error while Posting data")    }}func main(){  router := mux.NewRouter()  router.HandleFunc("/upload/{fileName}", uploadData).Methods("POST")  log.Fatal(http.ListenAndServe(":8000", router))}
随时随地看视频慕课网APP

相关分类

Go
我要回答