繁体   English   中英

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

[英]Posting a large file via HTTP/REST in C# without loading file into memory

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

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

以FTP方式进行操作会更有效。 FTP代码还支持恢复模式。 并且是用于文件更新的更有效协议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM