为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
MMTTMM 2023-05-15 15:47:11
我使用 Postman REST API 客户端将一个 csv 文件作为二进制文件发布。我需要获取上传文件的文件名。这是一个将 csv 文件作为二进制数据发布并将二进制数据存储为 csv 文件的简单示例。package mainimport (   //"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))}
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您可以使用编码,例如form-data,其中包括文件名以使用邮递员上传文件。这将帮助您向服务器发送multipart/form-data请求。之后,您可以从服务器端提取文件名。

//img1.sycdn.imooc.com//6461e3ac000147db12270304.jpg

从服务器端


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

    _, header, _ := req.FormFile("demo")

    fmt.Println(header.Filename)

}


查看完整回答
反对 回复 2023-05-15
?
潇湘沐

TA贡献1816条经验 获得超6个赞

因为,没有与 HTTP 请求正文关联的文件名。如果要获取文件名,则必须在 URL 中发送文件名。


package main


import (   

           "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))

}


查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信