You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Go如何从Postman请求体中获取文件路径与文件名

Go文件上传报错与需求实现说明

报错原因

你遇到的空指针报错内容如下:

2021/10/13 16:25:07 http: panic serving [::1]:60170: runtime error: invalid memory address or nil pointer dereference goroutine 6 [running]:
触发原因是调用r.FormFile("video")时直接忽略了错误返回:当请求中没有匹配到name为video的文件字段时,返回的header变量为nil,此时直接访问header.Filename就会触发空指针解引用错误。

修复后可运行代码

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func encodeFfmpeg(w http.ResponseWriter, r *http.Request) {
    // 无需将返回Content-Type设置为multipart/form-data,普通响应不需要该配置
    _, header, err := r.FormFile("video")
    if err != nil {
        http.Error(w, "读取文件参数失败: " + err.Error(), http.StatusBadRequest)
        fmt.Println("参数读取错误:", err)
        return
    }
    fmt.Println("上传的文件名为:", header.Filename)
}

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/encode", encodeFfmpeg).Methods("POST")
    fmt.Printf("Starting server at 8080 \n")
    http.ListenAndServe(":8080", router)
}

需求说明

你想要获取客户端本地完整文件路径(例如/home/ramesh/videos/video.mp4)的需求无法实现:出于用户隐私安全限制,所有现代浏览器、Postman这类HTTP请求工具,在上传文件时都不会传递文件在客户端的完整本地路径,只会传递文件名本身,服务端默认无法拿到客户端本地的完整路径信息。

Postman配置校验

需要确认你的请求配置符合以下要求:

  • 请求方法为POST,请求地址为http://localhost:8080/encode
  • 请求body类型选择form-data
  • 表单key字段值为video,类型选择File(点击key输入框右侧的下拉箭头可切换类型)
  • 已经点击Select Files选择了要上传的文件

你的Postman配置参考:
Postman请求配置

内容的提问来源于stack exchange,提问作者Ramesh S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:15:02