go - 使用Go处理后期请求中的多个文件

标签 go web file-upload webforms server-side

我正在使用Go编写服务器端的音乐流服务。我需要能够处理专辑上传。我希望管理员能够转到http://lisn.rocks/upload,选择一个必须包含meta.jsoncover.jpg和一些.mp3歌曲文件的文件夹,单击“上载”,其余部分由服务器处理。

这是我用来测试此功能的简单HTML页面:

<html>
    <head><title>Album Upload</title></head>
    <body>
        <form enctype="multipart/form-data" action="/upload" method="POST">
            <input type="file" name="album" webkitdirectory directory multiple> <br>
            <input type="submit" value="Upload">
        </form>
    </body>
</html>

我需要一个处理程序函数,它可以查看meta.json文件,检查其内容并根据其中的内容进行处理。 meta.json包含我需要的所有信息。现在,我不需要有关使用Go读取JSON或其他附带内容的广泛解释。

我只需要从该文件夹中将所有文件读取为单独的文件即可。相反,当我执行album时,Go会将它们全部视为单个request.FormFile("album")文件字段。

最佳答案

正如FormFile的文档所述,它仅返回第一个文件。提交表单后,album字段将是一个数组,您必须使用多部分流来处理每个单独的文件。

rd, err:=request.MultipartReader()
for {
  part, err:=rd.NextPart()
  if err==io.EOF {
      break
  }
  data,err:=ioutil.ReadAll(part)
  fileName:=part.FileName()
  part.Close()
}

您需要添加错误处理和数据处理等。

关于go - 使用Go处理后期请求中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62160087/

相关文章:

javascript - 路由整个文件夹及其内容

ruby-on-rails - 在 Rails 中将图像存储为模型

excel - 遍历golang中的列单元格并进行excelize

go - 吐出代码格式错误,而不是实际在golang中格式化

http - 如何捕获提供 HTTP 响应的服务器的 IP 地址

javascript - Python:从html的href标签获取javascript文件

go - `sync.WaitGroup` 的方法集是什么?

python - 使用Python+Flask实现高效的 session 变量服务器端缓存

java - 我如何以编程方式将文件上传到网站?

php - 动态创建的 HTML 文件输入元素不发布数据