在c#中通过HTTP/REST发布大文件,而不将文件加载到内存中

本文关键字:文件 加载 内存 HTTP REST 布大 | 更新日期: 2023-09-27 17:50:32

我想上传一个大文件作为标准的多部分帖子消息。然而,我看到的所有c#示例通常都使用字节数组(这需要将整个文件加载到内存的内容中)。我可以看到有一个StreamContent类型,但我不清楚在多部分上传中嵌入它会以最小的内存影响流请求。

这是我的想法。

using (HttpRequestMessage request = new HttpRequestMessage (HttpMethod.Post, uploadURL)) {
    MultipartFormDataContent multiPartContent = new MultipartFormDataContent ("----Abs23AawqrrqTbbSWpppo8--");
    StreamContent streamContent = new StreamContent (new FileStream(path, FileMode.Open));
    streamContent.Headers.Add ("Content-Type", "video/mov");
    streamContent.Headers.Add ("Content-Length", new FileInfo(path).Length.ToString() );
    multiPartContent.Add (streamContent, "bigMovie.mov", "bigMovie.mov");
    request.Content = multiPartContent;
    using (HttpResponseMessage response = await client.SendAsync (request)) {
        // check status code
    }
}

这是正确的方式来处理多部分上传一个大文件,将太大加载到内存?

在c#中通过HTTP/REST发布大文件,而不将文件加载到内存中

用FTP的方式会更有效率。FTP代码还支持恢复模式。是更有效的文件上传协议