WebClient.Downloadfile API在PowerShell中不起作用

时间:2014-01-23 08:15:54

标签: powershell-v2.0

(new-object System.Net.WebClient).Downloadfile(“https://www.dropbox.com/sh/tsyz48qg0rq3smz/QAstBLgPgN/version.txt”,“C:\ Users \ Brangle \ Desktop \ version.txt”)API下载无效数据。

version.txt文件需要下载。但实际上它正在下载目标位置上的version.txt中包含的一些xml文件

提前致谢

3 个答案:

答案 0 :(得分:1)

您正尝试在漂亮的以Dropbox为主题的html中下载呈现文件的保管箱页面。您需要提取真实网址,并且可以使用以下代码执行此操作:

$wc = New-Object system.net.webclient;
$s = $wc.downloadString("https://www.dropbox.com/sh/tsyz48qg0rq3smz/QAstBLgPgN/version.txt");
$r = [regex]::matches($s, "https://.*token_hash.*(?=`")");
$realURL = $r[$r.count-1].Value;
$wc.Downloadfile($realURL, "U:\version.txt");

正则表达式部分查找以https://开头的网址,中间有一个字符串token_hash,并在双引号字符之前结束一个字符“。有问题的行是:

FilePreview.init_text(“https://dl.dropboxusercontent.com/sh/tsyz48qg0rq3smz/QAstBLgPgN/version.txt?token_hash=AAEGxMpsE-T4xodBPd3A6uPTCr0uqh7h4B2YUSmTDJHmjg”,0,null,0)

希望这有帮助。

答案 1 :(得分:1)

这是功能:

var temp=$('span[att2="sp"]').first().closest('div[att1="first_div"]');
alert(temp.attr("id"));

答案 2 :(得分:0)

Re:LogMeIn - 他们使用cookie基本身份验证,因此您无法使用以前的代码。试试这个,它从第一个响应中获取一个cookie,然后使用它来使用webclient下载:

$url = "https://secure.logmein.com/fileshare.asp?ticket=01_L5vwmOrmsS3mnxPO01f5FRbWUwVKlfheJ5HsfpTV"
$wc = New-Object system.net.webclient  
$req = [System.Net.HttpWebRequest]::Create($url)  
$req.CookieContainer  = New-Object System.Net.CookieContainer  
$res = $req.GetResponse()
$cookie = $res.Cookies.Name + "=" + $res.Cookies.Value
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, $cookie)  
$newurl = $url + "`&download=1"
$wc.downloadFile($newurl, "c:\temp\temp.zip")