An early morning blaze gutted a block of four classrooms at Russley School in Christchurch.
Fire crews were called to the primary school just after 7am to find one building well alight.
They fought the flames from inside the classrooms to stop it from spreading to an attached administration block.
Firefighters had to crawl along the floor to avoid the smoke and heat as they battled the blaze.
Chief fire officer Mark Elstone said normally fires were fought from the outside, but on this occasion they moved inside in an effort to save the attached administration block.
One person was at the school when the fire started, and nobody was hurt.
Four fire engines and a command unit were at the scene, Fire and Emergency said.
Police were also at the school. The cause of the fire has not yet been established.
The school is closed today and principal Greg Lewis now has the job of working out where to put the 120 children who no longer have classrooms.
He said the children, who were in their final two years before heading to high school, had lost all of their work.
"Four classrooms have got four teachers and four lots of students and they've essentially lost everything.
"So our heart goes out to them and we're just really focused on making sure they are feeling ok, as well as they can today."
It's likely the 120 children who now no longer have a classroom will be taught in the school hall while a rebuild takes place.
The classrooms will be demolished today.
RNZ reporter Conan Young was at the scene this morning and said the blaze had close to other buildings but crews had managed to stop it going any further than the block of classrooms.
Firefighters had put out the fire by about 8.30am.
Teachers were at the school, some clearly upset and one was in tears.