服务器:
func main() {
currentFileId = UNIQUE_FILE_ID_START
log.Println("started ...")
start()
server := gin.Default()
server.POST("/upload_file", uploadFile)
}
func uploadFile(c *gin.Context) {
log.Println("inUploadFile")
log.Println(c.PostFormArray("file")) // пробовал ещё методы, почему-то пустота везде, логи ниже
//получить файл,записать файл логов ,проверить на 1 гиг, сохранить и отдать страницу
c.File("./templates/index2.html")
}
// пробовал ещё такие методы
log.Println(c.PostForm("file"))
log.Println(c.PostFormMap("file"))
log.Println(c.GetPostForm("file"))
log.Println(c.GetPostFormArray("file"))
log.Println(c.PostFormArray("file"))
客户:
<html lang = "ru">
<head>
<!-- <link rel="stylesheet" href="/staticCSS"> -->
</head>
<body>
<div class = "main_block">
<form enctype="multipart/form-data" method="post" action="/upload_file">
<p>Загрузите ваш файл.</p>
<p><input type="file" name="file">
<input type="submit" value="Отправить"></p>
</form>
</div>
</body>
</html>
日志:
2023/08/24 16:26:24 inUploadFile
2023/08/24 16:26:24 [] ПОЧЕМУ ПУСТО???
[GIN] 2023/08/24 - 16:26:24 | 200 | 91.721559ms | 127.0.0.1 | POST "/upload_file"
为什么日志是空的?如何接受并保存发布请求正文中的文件?
PostForm
并PostFormArray
处理作为 传递的表单中的字段application/x-www-form-urlencoded
。由于文件在请求中作为 传递multipart/form-data
,因此这些函数返回空字符串。有两种处理文件的方法
gin
。第一:直接使用 multipart。第二:使用专门的方法FormFile
和SaveUploadedFile
这是一个例子