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

时间:2014-03-15 03:57:09

标签: c# large-files multipart

我想上传一个大文件作为标准的多部分帖子。然而,我看到的所有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
    }
}

这是处理大型文件的多部分上传的正确方法,该文件太大而无法加载到内存中吗?

1 个答案:

答案 0 :(得分:0)

以FTP方式进行操作会更有效率。 FTP代码也支持恢复模式。并且是更高效的文件上传协议