@ScruffR, though an embedded SD standard was developed, there are very few, if any, chips available on the market. It may be best to a) reduce the amount of storage required by processing the raw stream and/or b) use a microSD card with a captive (locking hinged lid) socket. Why microSD? The SDFat library supports DMA, is fast and reliable. Wear leveling is done at the device level, not in your code.
@supscientist, Particle.publish() is designed to send 255 ASCII characters per publish. Assuming your data is binary, if you convert binary to Base64, you could get about 170 binary bytes per payload. With 100KB to send, that would take 588 publish events. At one publish per second (unless you pay for Enterprise rates), that will take about 10 minutes to transmit. Basically 10mins/100KB.
The other alternative is to stream non-encrypted UDP or TCP data to a server directly. There is a HTTPS library available though I can't comment on how suitable it would be in this case.