You have to read the file byte by byte until EOF, then send those bytes one by one to Wire.
One more thing: you have to check the file size beforehand, so you can start by sending that number to the NodeMCU, followed by the file. So I envision communication to go something like this:
NodeMCU sends command: please send me size of file "niceimage.jpg" (so a byte with the command followed by the file name).
Mega: checks file size.
NodeMCU requests data: expects unsigned long - 4 bytes (the file size).
Mega: sends file size.
ModeMCU sends command: please send the file.
Mega: prepares to send file.
NodeMCU: requests data (expect file size number of bytes)
Mega: sends the file, byte by byte.