From c5d451a398e30b2ba2dd7fef283cf087eef3f5c5 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 21 Nov 2014 18:03:48 +0800 Subject: [PATCH] :watermelon: check file size when open file --- file/files.go | 9 +++++++++ util/file.go | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/file/files.go b/file/files.go index 4bacb02..86c13f6 100644 --- a/file/files.go +++ b/file/files.go @@ -118,6 +118,15 @@ func GetFile(w http.ResponseWriter, r *http.Request) { } path := args["path"].(string) + + size := util.File.GetFileSize(path) + if size > 5242880 { // 5M + data["succ"] = false + data["msg"] = "This file is too large to open :(" + + return + } + buf, _ := ioutil.ReadFile(path) extension := filepath.Ext(path) diff --git a/util/file.go b/util/file.go index dc4d086..c8a9c79 100644 --- a/util/file.go +++ b/util/file.go @@ -12,6 +12,21 @@ type myfile struct{} // File utilities. var File = myfile{} +// GetFileSize get the length in bytes of file of the specified path. +func (*myfile) GetFileSize(path string) int64 { + f, err := os.Open(path) + if nil != err { + return -1 + } + + fi, err := f.Stat() + if nil != err { + return -1 + } + + return fi.Size() +} + // IsExist determines whether the file spcified by the given path is exists. func (*myfile) IsExist(path string) bool { _, err := os.Stat(path)