2013-03-04 19 views
0

我用下面的代码来下载图像的某些网址产生损坏的文件:WebClient.DownloadData从

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#中相同的代码,看看它会做,但我得到了同样的结果.. :-(

如果有人可以帮忙解决这个问题,我会非常感谢..

谢谢。

+0

检查http://stackoverflow.com/questions/3615800/download-image-from-the-site- in-net-c – Mate 2013-03-04 02:29:33

回答

2

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

很可能得到WebClient自动解码gzip的响应,但需要一些技巧 - Uncompressing gzip response from WebClient

+0

太简单了......非常感谢..我看到文件被压缩了,但甚至没有想到会是这个问题.. – Ads 2013-03-04 05:04:47