When you don't have a file on disk, you can either
Use one of the built-in file providers to load a document from a URL, Database, Stream, Memory, AzureBlob, AmazonS3 etc. : FileSystemFileProvider, UrlFileProvider, StreamFileProvider, MemoryFileProvider, DatabaseFileProvider, AssemblyResourceFileProvider, TemporaryFileProvider.
Or implement base class FileProvider to provide a custom way of reading and/or writing files (see CustomFileProvider class in example code for details).