我正在尝试使用HttpWebRequest
在C#中下载文件的一部分,并且这样做成功,但仅在某种程度上。虽然我的方法适用于基于文本的文件(例如.txt
,.php
,.html
等),但它似乎与其他内容(例如{{1)不相容这是一个问题,因为无论文件类型如何,它都应该下载得很好(它只是一个下载,而不是打开文件的东西,所以文件类型是无关紧要的)。
问题是,在正确下载基于文本的文件时,它与其他文件类型不能很好地兼容。例如,我尝试将该方法用于.jpg
,并且它在文件的开头有可能有额外的数据(可能是HTTP响应头?),并且比实际文件大小大约200 KB。
我正在使用以下方法下载文件(我已将URL设置为正确的URL(是的,我检查了八元组,是正确的URL 。),我'将线程设置为1(从而下载整个文件),该文件适用于基于文本的文件,但不适用于其他文件类型):
.png
那么,知道问题是什么以及如何解决这个问题?
答案 0 :(得分:2)
图像响应的HTTP正文不是可以直接在图像查看器中使用的字节流。图像是二进制的,而HTTP只允许字符串。
相反,在这种情况下,HTTP正文通常(取决于您的content negotiation,即您的接受/编码标头)Base64字符串。
所以改变这个
return result;
到这个
return Convert.FromBase64String(result);
(并将您的返回类型更改为byte[]
)。
如果这不起作用,请目测检查您的请求和响应标头,并检查压缩,例如gzip
或deflate
...另请参阅this answer。