Bläddra i källkod

Improved error handling and stoped the crash due to fatel error (#593) close #624

sachin-puranik 5 år sedan
förälder
incheckning
82bb1153d7
1 ändrade filer med 8 tillägg och 4 borttagningar
  1. 8 4
      lib.go

+ 8 - 4
lib.go

@@ -24,10 +24,13 @@ import (
 // ReadZipReader can be used to read the spreadsheet in memory without touching the
 // filesystem.
 func ReadZipReader(r *zip.Reader) (map[string][]byte, int, error) {
+	var err error
 	fileList := make(map[string][]byte, len(r.File))
 	worksheets := 0
 	for _, v := range r.File {
-		fileList[v.Name] = readFile(v)
+		if fileList[v.Name], err = readFile(v); err != nil {
+			return nil, 0, err
+		}
 		if strings.HasPrefix(v.Name, "xl/worksheets/sheet") {
 			worksheets++
 		}
@@ -53,16 +56,17 @@ func (f *File) saveFileList(name string, content []byte) {
 }
 
 // Read file content as string in a archive file.
-func readFile(file *zip.File) []byte {
+func readFile(file *zip.File) ([]byte, error) {
 	rc, err := file.Open()
 	if err != nil {
-		log.Fatal(err)
+		log.Println(err)
+		return nil, err
 	}
 	dat := make([]byte, 0, file.FileInfo().Size())
 	buff := bytes.NewBuffer(dat)
 	_, _ = io.Copy(buff, rc)
 	rc.Close()
-	return buff.Bytes()
+	return buff.Bytes(), nil
 }
 
 // SplitCellName splits cell name to column name and row number.