package utils import ( "bufio" "os" ) // ReceiveFile Permet de récupérer un fichier sur un reader func ReceiveFile(path string, fileSize int, reader *bufio.Reader) bool { file, fileErr := os.Create(path) if fileErr != nil { return false } defer file.Close() // Params buffer := make([]byte, 1024) currentSize := 0 b, done := copyFile(currentSize, fileSize, reader, buffer, file) if done { return b } return true } func copyFile(currentSize int, fileSize int, reader *bufio.Reader, buffer []byte, file *os.File) (bool, bool) { // Retrieving file for currentSize < fileSize { length, err := reader.Read(buffer) if err != nil { return false, true } _, err = file.WriteAt(buffer, int64(currentSize)) if err != nil { return false, true } currentSize += length check := fileSize - currentSize if 1024 > check && check > 0 { buffer = make([]byte, check) } } return false, false } func fileExists(filename string) bool { info, err := os.Stat(filename) if os.IsNotExist(err) { return false } return !info.IsDir() }