Я имею дело с загрузкой файла multipart / form-data, и мой бэкэнд использует Go io.Copy
для копирования данных формы в локальный файл.
func SaveFileHandler() error {
...
file := form.File["file_uploaded"] // file uploaded in form
src, _ := file.Open()
// here the original file size is 35540353 in my case,
// which is a video/mp4 file
fmt.Println(file.Size)
// create a local file with same filename
dst, _ := os.Create(file.Filename)
// save it
_, err = io.Copy(dst, src)
// err is nil
fmt.Println(err)
stat, _ := dst.Stat()
// then the local file size differs from the original updated one. Why?
// local file size becomes 35537281 (original one is 35540353)
fmt.Println(stat.Size())
// meanwhile I can't open the local video/mp4 file,
// which seems to be broken due to losing data from `io.Copy`
...
Как это может быть? Есть ли максимальный размер буфера для io.Copy
? Или имеет значение тип MIME файла в этом случае?
Я попытался с png и txt файлом, и оба работали как ожидалось.
Go версия go1.12.6 linux/amd64