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 关注
- 142 浏览
添加回答
举报