我写了一个简短的脚本,让我下载一个文件。
Invoke-WebRequest -Uri $r2.Forms.Action -WebSession $myWebSession -OutFile $destination$filename
整个下载缓冲在内存中,这对于较大的文件显然不是最佳选择。我想知道(我找不到)一种方法/属性来防止这种情况并直接流式传输到磁盘。与.NET中的AllowWriteStreamBuffering类似的东西。
Out of Memory Exception When Using HttpWebRequest to Stream Large File
感谢任何帮助!
答案 0 :(得分:5)
似乎唯一的方法是使用WebClient
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($id, $p, $url)
$webclient.DownloadFile($r2, $destination+$tempfile)
#rename tempfile
$filename = $webclient.ResponseHeaders["Content-Disposition"].SubString($webclient.ResponseHeaders["Content-Disposition"].IndexOf("filename=")+10).Replace("`"", "");
Rename-Item $destination$tempfile -NewName $filename