在C#中通过HTTP/REST发布大文件,而不将文件加载到内存中
我想上传一个大文件作为一个标准的多部分邮件。然而,我看到的所有C#示例通常都使用字节数组(需要将整个文件加载到内存内容中)。我可以看到有一种StreamContent类型,但我不清楚在多部分上传中嵌入这种类型是否会在对内存影响最小的情况下对请求进行流式处理 下面是我的想法在C#中通过HTTP/REST发布大文件,而不将文件加载到内存中,c#,large-files,multipart,C#,Large Files,Multipart,我想上传一个大文件作为一个标准的多部分邮件。然而,我看到的所有C#示例通常都使用字节数组(需要将整个文件加载到内存内容中)。我可以看到有一种StreamContent类型,但我不清楚在多部分上传中嵌入这种类型是否会在对内存影响最小的情况下对请求进行流式处理 下面是我的想法 using (HttpRequestMessage request = new HttpRequestMessage (HttpMethod.Post, uploadURL)) { MultipartFormDataC
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代码还支持恢复模式。而且对于文件上传来说是更有效的协议谢谢,但是由于各种与权限相关的原因,我需要保持这个REST调用。