I've written following code to get the content from a web page and save to the system. if the webpage is in html format i'm able to save it. if the web page is in pdf format i'm unable to save it. After saving if i opend the file blank pages are coming.
我想知道如何从响应中保存pdf文件.
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
webContent = reader.ReadToEnd();
StreamWriter sw = new StreamWriter(FileName);
sw.WriteLine(webContent);
sw.Close();
Run Code Online (Sandbox Code Playgroud)
请尽快帮助我.
Joe*_*orn 14
StreamReader.ReadToEnd()返回一个字符串.PDF文件是二进制文件,包含非字符串友好的数据.您需要将其读入字节数组,并将字节数组写入磁盘.更好的是,使用较小的字节数组作为缓冲区并以小块读取.
您还可以通过使用webclient简化整个过程:
using (var wc = new System.Net.WebClient())
{
wc.DownloadFile(Url, FileName);
}
Run Code Online (Sandbox Code Playgroud)
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
using (FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
stream.BlockCopy(fs);
}
...
public static class StreamHelper
{
public static void Copy(Stream source, Stream target, int blockSize)
{
int read;
byte[] buffer = new byte[blockSize];
while ((read = source.Read(buffer, 0, blockSize)) > 0)
{
target.Write(buffer, 0, read);
}
}
public static void BlockCopy(this Stream source, Stream target, int blockSize = 65536)
{
Copy(source, target, blockSize);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19415 次 |
| 最近记录: |