I am using a .NET library function that uploads files to a server, and takes as a parameter a path to a file. The data I want to send is small and constructed at runtime. I can save it to a temporary file and then upload it.
Since my application will be deployed in a variety of environments, and I don't know if I'll be able to create the temporary file reliably, it would be preferable to be able to pass in a path to a virtual file in memory.
I can't change the library; I know it executes the following on the file:
LibraryUploadFunction(string filename) {
fileName = Path.GetFullPath(fileName);
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
...
}
Is it possible to avoid writing the file to disk?
Thanks
Edit:
The library call is Webclient.UploadFile, as pointed out in the answers, there are many workarounds possible, including using alternative libraries, of which there are many.
No, your library is fundamentally inflexible in this aspect, by the fact that it uses FileStream
.
Options:
If the library exposes another method accepting a Stream
, you could use a MemoryStream
.
If it accepts a SafeFileHandle
, you could use a MemoryMappedFile
.
Otherwise, you'll have to be satisfied with a file on disk.
If I understand you correctly, you want to use one of the other WebClient.Upload*
methods. For example, if you have your data in a byte[]
, use UploadData
.
Another option, if you want to upload the data as a stream is to use OpenWrite
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With