通过c#使用RESTapi将大文件放在一个驱动器中
本文关键字:一个 驱动器 使用 RESTapi 文件 通过 | 更新日期: 2023-09-27 18:24:55
我想通过rest api将一个大文件(1.4gb)放入onedrive。
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(myUri);
webRequest.Timeout = 12 * 60 * 60 * 1000;
webRequest.AllowAutoRedirect = true;
webRequest.ReadWriteTimeout = 12 * 60 * 60 * 1000;
webRequest.AllowReadStreamBuffering = false;
webRequest.AllowWriteStreamBuffering = false;
webRequest.SendChunked = true;
webRequest.KeepAlive = false;
webRequest.ProtocolVersion = HttpVersion.Version10;
webRequest.ServicePoint.ConnectionLimit = 1;
webRequest.ContinueTimeout = 12 * 60 * 60 * 1000;
webRequest.Method = "PUT";
using (Stream stream = webRequest.GetRequestStream())
{
stream.WriteTimeout = 12 * 60 * 60 * 1000;
writeToStream(stream);
stream.Flush();
stream.Close();
}
但在大约200mb时,我收到IOException(底层连接已关闭。写入过程中出现意外错误)
我在互联网上搜索了一下,发现一些建议将KeepAlive设置为false,设置HttpVersion
和ConnectionLimit
,正如你所看到的。
我试过用不同的设置,但总是一样的。
由于内存消耗,我无法使用HttpClient
。
该代码适用于小文件。
OneDrive已经支持大文件上传https://gist.github.com/rgregg/37ba8929768a62131e85
您是否尝试过windows运行时的LIVE SDK。
http://msdn.microsoft.com/en-us/library/dn659730.aspxhttp://msdn.microsoft.com/en-us/library/windows/apps/hh826531.aspx
希望有了这个,你可以实现,因为它提供了asyc上传。
注意:这不是主题。但我还是想到了分享。我尝试过使用AWS SDK上传到AmazonS3,它确实有效,我尝试过大约800MB的文件。
目前无法通过REST API上传大于100MB的文件。希望这种情况在未来会有所改善。