【问题标题】:How to download an image using a URL with a query string instead of image path?如何使用带有查询字符串而不是图像路径的 URL 下载图像?
【发布时间】:2024-05-02 23:50:02
【问题描述】:

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

【问题讨论】:

  • 虽然已经解决了,但我忘了指出我有 0.2% 的 C# 经验。

标签: c# image url download query-string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你应该可以这样做:

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

    【讨论】:

    • 我试过这个,但它不能正常工作。它创建了一个文件,但该文件为 1kb,其中没有任何内容。然后,当然,当尝试将此文件加载到 PictureBox 中时,它失败并显示“参数无效”。我在做WebClient Client = new WebClient();Client.DownloadFile(txtURL.Text, "C:\\12345.jpg");
    • 是您尝试加载的 URL,实际上是对图像文件进行 HTTP 重定向吗?即,图像加载后,您是否在浏览器中看到不同的 url?
    • 它不会改变链接,不会。在 Firefox 中,它只是提示保存 jpeg 文件,而在 IE 中,它显示图像,仍然是与查询字符串相同的链接。保存文件的提示并没有告诉我图片的完整路径,但确实显示了图像文件名。 Chrome 说“正在重定向...”,然后自动保存图像并显示在 Chrome 的底部。没有任何情况下它会显示图像的新 URL。
    • 顺便说一下,这是一个第三方网站,不是我的。他们为我们提供了超过 7,000 件商品的产品数据,每件商品都有一个与上述类似的图片链接。我的目标是自动下载所有 7,000 张图片。
    • 您可以在尝试下载文件之前检查 url 是否有效(返回 HTTP 200)。您还可以检查返回的数据是否异常小。
    【解决方案3】:

    使用 WebClient 类和他的 DownloadFile 方法。 http://msdn.microsoft.com/en-us/library/ez801hhe.aspx

    在方法的 URI 中传递查询字符串参数是完全可以接受的。

    【讨论】:

    • (与上面的答案大致相同,只是描述性不同)
    • @JerryDodge 这个答案首先发布,仅供参考。所以说真的,另一个答案通常与 this 相同,只是更具描述性。
    最近更新 更多