我正在使用.NET库函数将文件上传到服务器,并将参数作为文件的路径。我想发送的数据很小,并在运行时构建。我可以将其保存到临时文件中,然后上传。
由于我的应用程序将部署在各种环境中,并且我不知道我是否能够可靠地创建临时文件,因此最好能够将路径传递给虚拟文件在记忆中。
我无法改变图书馆;我知道它在文件上执行以下命令:
LibraryUploadFunction(string filename) {
fileName = Path.GetFullPath(fileName);
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
...
}
是否可以避免将文件写入磁盘?
由于
修改
库调用是Webclient.UploadFile,正如答案中指出的那样,有许多可行的解决方法,包括使用替代库,其中有很多。
答案 0 :(得分:10)
不,你的图书馆在这方面基本上是不灵活的,因为它使用了FileStream
。
选项:
答案 1 :(得分:6)
如果图书馆公开了另一种接受Stream
的方法,则可以使用MemoryStream
。
如果它接受SafeFileHandle
,您可以使用MemoryMappedFile
。
否则,您必须对磁盘上的文件感到满意。
答案 2 :(得分:2)
如果我理解正确,您希望使用其他WebClient.Upload*
方法之一。例如,如果您的数据位于byte[]
,请使用UploadData
。
另一个选项是,如果要将数据上传为流,则使用OpenWrite
。