Để có được kích thước tập tin và MIME type:
// Size constants
const (
MB = 1 << 20
)
type Sizer interface {
Size() int64
}
func Sample(w http.ResponseWriter, r *http.Request) error {
if err := r.ParseMultipartForm(5 * MB); err != nil {
return err
}
// Limit upload size
r.Body = http.MaxBytesReader(w, r.Body, 5*MB) // 5 Mb
//
file, multipartFileHeader, err := r.FormFile("file")
// Create a buffer to store the header of the file in
fileHeader := make([]byte, 512)
// Copy the headers into the FileHeader buffer
if _, err := file.Read(fileHeader); err != nil {
return err
}
// set position back to start.
if _, err := file.Seek(0, 0); err != nil {
return err
}
log.Printf("Name: %#v\n", multipartFileHeader.Filename)
log.Printf("Size: %#v\n", file.(Sizer).Size())
log.Printf("MIME: %#v\n", http.DetectContentType(fileHeader))
}
Mẫu đầu ra:
2016/12/01 15:00:06 Name: "logo_35x30_black.png"
2016/12/01 15:00:06 Size: 18674
2016/12/01 15:00:06 MIME: "image/png"
Nguồn
2016-12-01 23:03:04
Cảm ơn bạn vì điều đó, chủ yếu là những gì tôi đang tìm kiếm. Làm thế nào bạn sẽ tìm ra kích thước (kb, mb khôn ngoan) của tập tin mặc dù, trong khi vẫn giữ tập tin trực tiếp để sử dụng sau này? – user81779
Trong bài liên kết 'golang-nuts', ví dụ sử dụng hàm' ioutil.ReadAll' thực sự là một hàm tiện lợi. Để kiểm soát tốt hơn, bạn sẽ sử dụng hàm 'io.ReadFull' trả về số byte đã đọc. Xem http://golang.org/pkg/io/ioutil/#ReadAll và http://golang.org/pkg/io/#ReadFull – Intermernet