1 回答

TA貢獻2019條經驗 獲得超9個贊
調用mimetype.DetectReader(file)讀取部分文件。調用 _, err = io.Copy(pict, file)讀取文件的其余部分。要讀取整個文件,請回溯到調用 之前的偏移量 0 io.Copy。
文件在偏移量 0 處打開。調用 后無需立即查找偏移量 0 Open。
通過交換調用順序來修復問題:
...
mime, _, err := mimetype.DetectReader(file)
if err != nil {
fmt.Println("Can't read the file")
return
}
// Rewind to the start of the file
_, err = file.Seek(0, io.SeekStart)
if err != nil {
fmt.Println("Can't read the file")
return
}
...
服務器也有類似的問題。檢測類型后回退:
mimeType, _, err := mimetype.DetectReader(file) // Package gabriel-vasile/mimetype
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
// Rewind to the start of the file
_, err = file.Seek(0, io.SeekStart)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報