Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用带有查询字符串的URL而不是图像路径下载图像?_C#_Image_Url_Download_Query String - Fatal编程技术网

C# 如何使用带有查询字符串的URL而不是图像路径下载图像?

C# 如何使用带有查询字符串的URL而不是图像路径下载图像?,c#,image,url,download,query-string,C#,Image,Url,Download,Query String,我正在做一个C#windows应用程序,需要知道如何下载带有查询字符串链接的图片,例如www.mywebsite.com/img.aspx?imgid=12345(它会根据imgid自动重定向到相应的图像)。然后我需要将文件保存到磁盘的某个位置。我不需要任何华丽的下载管理器,只需要最干净的方式从重定向URL获取这样的图像。使用WebClient类和DownloadFile方法。 在方法的URI中传递querystring参数是完全可以接受的。您应该可以这样做: using (WebClient

我正在做一个C#windows应用程序,需要知道如何下载带有查询字符串链接的图片,例如
www.mywebsite.com/img.aspx?imgid=12345
(它会根据
imgid
自动重定向到相应的图像)。然后我需要将文件保存到磁盘的某个位置。我不需要任何华丽的下载管理器,只需要最干净的方式从重定向URL获取这样的图像。

使用WebClient类和DownloadFile方法。


在方法的URI中传递querystring参数是完全可以接受的。

您应该可以这样做:

using (WebClient Client = new WebClient ())
{
    Client.DownloadFile("http://www.mywebsite.com/img.aspx?imgid=12345", "12345.jpg");
}

您的文件将位于
bin/debug
文件夹,并提供浏览器下载文件的扩展名。像

{
            using (WebClient client = new WebClient()) {
                client.DownloadFile("http://www.mywebsite.com/img.aspx?imgid=12345", "selectedfile.gif");
            }
        }

我试过这个,但效果不好。它创建了一个文件,但该文件为1kb,其中没有任何内容。当然,当尝试将此文件加载到PictureBox时,由于“参数无效”而失败
客户端下载文件(txtURL.Text,“C:\\12345.jpg”)
您试图加载的url是否实际执行了到图像文件的HTTP重定向?ie,加载图像后,您是否在浏览器中看到不同的url?它不会更改链接,不会。在Firefox中,它只是提示保存jpeg文件,在ie中,它显示图像,仍然是带有查询字符串的相同链接。保存文件的提示不会告诉我图片的完整路径,但会显示图像文件名。Chrome显示“重定向…”,然后自动保存图像并显示在Chrome的底部。在任何情况下都不会显示图像的新URL。顺便说一句,这是第三方网站,不是我的。他们给我们提供了7000多个项目的产品数据,每个项目都有一个像上面那样的图像链接。我的目标是自动下载所有7000个图像。在尝试下载文件之前,您可以检查url是否有效(返回HTTP 200)。您还可以检查返回的数据是否异常小(通常与上面的答案相同,只是不具有描述性)@jerrydoge此答案首先发布,仅供参考。实际上,另一个答案与这个答案大致相同,只是更具描述性。虽然已经解决了,但我忘了指出我有0.2%的C#经验。