首页 > 后端开发 > Golang > 如何使用 Go 的'multipart/form-data”发布文件和表单数据?

如何使用 Go 的'multipart/form-data”发布文件和表单数据?

DDD
发布: 2024-11-25 09:48:38
原创
685 人浏览过

How do I POST Files and Form Data Using Go's `multipart/form-data`?

多部分/表单数据请求中的 POST 文件

多部分请求经常用于文件上传,除了文件之外,还需要提交其他表单数据。让我们看看如何使用 Go 的 mime/multipart 和 http 包来解决这个问题。

考虑以下 HTML 表单:

<form action="/multipart" enctype="multipart/form-data" method="POST">
  <label for="file">Please select a File</label>
  <input>
登录后复制

在 Go 中,我们可以按如下方式发送此多部分请求:

import (
  "bytes"
  "io"
  "mime/multipart"
  "net/http"
)

var buffer bytes.Buffer
w := multipart.NewWriter(&buffer)

// Write form fields
w.CreateFormField("input1")
w.WriteField("input1", "value1")

// Prepare to write a file
fd, err := os.Open("filename.dat")
if err != nil {
  return err
}

// Create a form field for the file
fw, err := w.CreateFormFile("file", fd.Name())
if err != nil {
  return err
}

// Copy file contents into form field
if _, err := io.Copy(fw, fd); err != nil {
  return err
}

// Close writer
w.Close()

// Prepare request
resp, err := http.Post(url, w.FormDataContentType(), &buffer)
if err != nil {
  return err
}
登录后复制

多部分请求发送文件的关键在于使用 *multipart.Writer 上的 CreateFormFile 创建一个专门用于文件的表单字段。创建后,我们可以使用 io.Copy 将文件内容写入此表单字段。

以上是如何使用 Go 的'multipart/form-data”发布文件和表单数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板