0

我正在使用以下代码下载图像:

Dim strImageURL as string = "http://images.bookworld.com.au/images/bau/97817433/9781743315187/0/0/plain/the-storyteller.jpg"
Dim data As Byte()
Using client As New WebClient()
  data = client.DownloadData(strImageURL)
  'client.DownloadFile(strImageURL, "MyFile.jpg")
End Using
File.WriteAllBytes("\\mappedPath\Images\MyFile2.jpg", data)

该代码在大多数情况下都可以正常工作,但是我们遇到了一个图像,该图像一旦保存就已损坏..

这是令人不安的网址:http: //images.bookworld.com.au/images/bau/97817433/9781743315187/0/0/plain/the-storyteller.jpg

我尝试使用上面的代码,然后是“client.DownloadFile”行,认为它们可能有不同的结果,但我不断收到损坏的文件。

我可以点击 URL,Chrome 可以很好地显示图像。我也可以将文件保存到我的本地机器上。但是使用上面的代码,我只是得到了这个特定 URL 的损坏的 .jpg 文件。

我怀疑该图像在某种图像服务服务上,并且可能无法正确发送某些内容..但我不确定..

我什至在 C# 中尝试了相同的代码来看看它会做什么,但我得到了相同的结果.. :-(

如果有人可以帮助解决这个问题,我将非常感激..

谢谢。

4

1 回答 1

3

查看来自该特定 URL 的 Web 服务器的响应标头会显示Content-Encoding:gzip. 换句话说,它不是返回 jpg,而是返回 gzip。Web 浏览器足够聪明,可以自动解码 zip,但事实WebClient并非如此。请注意,gzip不是您的标准 .zip 或“PK zip”,因此不要尝试将文件命名为 .zip 并期望它能够解压缩。

可以WebClient自动解码 gzip 响应,但需要一些技巧 -从 WebClient 解压缩 gzip 响应

于 2013-03-04T03:06:59.857 回答