我正在使用Go编写服务器端的音乐流服务。我需要能够处理专辑上传。我希望管理员能够转到http://lisn.rocks/upload,选择一个必须包含meta.json
,cover.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()
}
您需要添加错误处理和数据处理等。>