2015-05-16 117 views
0

我正在开发一个应用程序,通过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(); 
} 

现在字符串包含HTML的网页内容。我需要将其保存到D:\Cache\

如何将html内容保存到磁盘?

回答

1

您可以使用此代码到你的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"; 
+0

嗨jimileo ..其工作正常。但如何保存该特定的网站名称.. – Deena

+0

string filename = txtURL.Text; var path =(@“D:\ Cache \ myfile.html”); File.WriteAllText(path,html); 现在文件名有网页名称..所以我应该包括这个文件名保存为原来的网站名称。我不想分裂hreflink ..这里路径变量有“D:\ Cache \ myfile。HTML“,每当我保存网页它保存到文件夹myfile.html ..我想保存与txtURL.text值..请给解决方案。 – Deena

+0

'var path = @”D:\ Cache \“)+文件名;' – JimiLoe

0

,你必须写上下面的代码保存按钮

File.WriteAllText(路径,browser.Document.Body.Parent.OuterHtml,Encoding.GetEncoding(browser.Document.Encoding) );

现在'Body.parent'必须保存整个页面,而不是只保存一部分。

检查它。

+0

感谢它的工作..但如何保存为网页的名称.. – Deena

0

据我所知,.NET Framework没有内置任何东西。

所以我的办法是象下面这样:

  • 使用System.NET.HttpWebRequest让主HTML文档作为 字符串或流(容易)。 (你已经这样做)

  • 加载此为HTMLAgilityPack文件,你现在可以轻松地查询 文档来获取所有图像元素的列表,样式表 链接等

  • 然后进行单独的web请求每个这些文件并将它们保存到一个子目录中。

  • 最后更新主页面中的所有相关链接,指向子目录中的 项目。

相关问题