我正在开发一个通过Web浏览器控件显示网页的应用程序。
单击“保存”按钮时,带有图像的网页应存储在本地存储中。它应该以.html格式保存。
我有以下代码:
WebRequest request = WebRequest.Create(txtURL.Text);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
现在string html包含网页内容。我需要将其保存到D:\Cache\
如何将html内容保存到磁盘?
答案 0 :(得分:2)
您可以使用此代码将HTML字符串写入文件:
var path= @"D:\Cache\myfile.html");
File.WriteAllText(path, html);
进一步细化:从(文本)URL中提取文件名。
<强>更新强> 有关详细信息,请参阅Get file name from URI string in C#。这个想法是:
var uri = new Uri(txtUrl.Text);
var filename = uri.IsFile
? System.IO.Path.GetFileName(uri.LocalPath)
: "unknown-file.html";
答案 1 :(得分:0)
您必须在保存按钮
上写下以下代码File.WriteAllText(path,browser.Document.Body.Parent.OuterHtml,Encoding.GetEncoding(browser.Document.Encoding));
现在'Body.parent'必须保存整个页面,而不是仅保存部分。
检查它。答案 2 :(得分:0)
据我所知,.NET Framework没有内置任何内容。
所以我的方法如下:
使用System.NET.HttpWebRequest
将主HTML文档作为一个
字符串或流(简单)。 (你已经完成了)
将其加载到HTMLAgilityPack文档中,您现在可以轻松地将其加载到该文档中 查询文档以获取所有图像元素,样式表的列表 链接等
然后为每个文件单独发出Web请求并保存 他们到一个子目录。
最后更新主页面中的所有相关链接以指向 子目录中的项目。