func FromReader(src io.Reader) (string, error) {
	h := md5.New()
	if _, err := io.Copy(h, src); err != nil {
		return "", err
	}
	checksum := h.Sum(nil)
	return fmt.Sprintf("%x", checksum), nil
}
// FromReader returns an MD5 checksum string from data read from src.
// It returns an empty string and an error if an error occurs reading from src.
FromReader returns an MD5 checksum string from data read from src.
It returns an empty string and an error if an error occurs reading from src.
// FromReader returns an MD5 checksum string from data read from src . // It returns an empty string and an error if an error occurs reading from src .
func FromReader(src io.Reader) (string, error) {
	h := md5.New()
	if _, err := io.Copy(h, src); err != nil {
		return "", err
	}
	checksum := h.Sum(nil)
	return fmt.Sprintf("%x", checksum), nil
}
func FromReader ( src io . Reader ) ( string , error ) { h := md5 . New ( ) if _ , err := io . Copy ( h , src ) ; err != nil { return " " , err } checksum := h . Sum ( nil ) return fmt . Sprintf ( " " , checksum ) , nil }
FromReader returns an MD5 checksum string from data read from src.
FromReader returns an MD5 checksum string from data read from src .