RestSharp在上传时将整个文件加载到内存中.怎么避免呢?

Mau*_*res 7 .net c# mono http restsharp

我在Mono项目中使用RestSharp来上传一些文件,我注意到当上传大文件时,内存会大大增加.

看看RestSharp源代码,我注意到FileParameter需要一个字节数组,这意味着它实际上是将文件加载到内存中.

难道我做错了什么?RestSharp有没有办法不这样做?我可能正在上传非常大的文件,所以从内存中上传它们不是一种选择.

欢迎提供任何帮助(包括告诉我使用单声道提供的另一个HTTP库).

Joh*_*han 5

使用AddFile(name, writer, filename)过载。

对于writer参数,传递一个Action<Stream>直接写入请求正文流的 。不要关闭流。

这是写入流的示例

  • 没有出路,body总是加载到内存中-&gt; https://github.com/restsharp/RestSharp/blob/master/RestSharp/RestClient.cs#L433 (4认同)

Mau*_*res 5

找到这一行后我放弃了,因此请求正文总是加载到内存中,这很不幸,因此我构建了一个简单的解决方案,基于此问题和调试Apache HttpClient 库中的代码进行文件上传。

如果有人感兴趣,可以在此处获得源代码。