繁体   English   中英

C#从URL下载图像

[英]C# Download an image from URL

我使用一个网站获取有关wifi使用情况的统计信息。 该网站创建数据图形表示的图像。 它的操作方式是由用户设置日期。 例如,可以说这是上个月的统计数据。 该网站生成一个URL,然后将其发送到服务器,服务器将返回图像。 链接的示例如下:

https://www.example.com/graph/daily_usage?time_from=2015-06-01+00%3A00%3A00+%2B0100&time_to=2015-06-30+23%3A59%3A59+%2B0100&tsp=1436519988

问题是,我正在制作一个第三方程序,该程序将下载此图像以供我的程序使用。 但是,我无法使用该文件。 就像文件损坏了一样。 我尝试了几种方法,但也许有人可以建议其他方法。 基本上,如何从URL链接下载服务器生成的图像?

聚苯乙烯

只是注意到,如果我通过浏览器右键单击下载文件并保存,则图像下载的大小为17千字节左右。 但是,如果我使用WebClient方法下载图像,则它只会下载1.5kb。 为什么会这样呢? 似乎WebClient方法没有完全下载。

目前我的代码

if (hrefAtt == "Usage Graph")
{
    string url = element.getAttribute("src");
    WebClient client = new WebClient();
    client.DownloadFile(url, tempFolderPath + "\\" + currentAcc + "_UsageSummary.png");
    wd.AddImagesToDoc(tempFolderPath + "\\" + currentAcc + "_UsageSummary.png");
    wd.SaveDocument();
}

TempFolderPath是我的桌面\\ TempFolder \\

更新随机地,我决定用记事本查看文件的原始数据,有趣的是,图像数据实际上是网站首页html代码的副本,而不是图像的原始数据:S,这有什么意义?

这将下载Google徽标:

var img = Bitmap.FromStream(new MemoryStream(new WebClient().DownloadData("https://www.google.co.uk/images/srpr/logo11w.png")));

首先,您必须了解链接纹理。 如果所有链接相同或彼此接近,则必须使用substring / remove / datetime等方法来建立新的请求链接。 例如;

string today = DateTime.Now.ToShortDateString();
string generatedLink = @"http://www.yoururl.com/image + " + today + ".jpg";
string generatedFileName = @"C:\Usage\usage + " + today + ".jpg";

WebClient wClient = new WebClient();
wClient.DownloadFile(generatedLink, generatedFileName);

暂无
暂无

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

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