继续复制我之前的答案。
其实在浏览器里面是不行的。因为浏览器为了安全并没有给前端访问本地资源的权限,但是可以通过浏览器 API 下载的方式来将内容保存成本地 TXT 文件。
不过像这种不同浏览器有不同 API 的东西,自己太麻烦了,我曾经用过 FileSaver.js 这个库来下载过在金山词霸上的错词表,自己读取表单内容在 js 里拼装成你想要的样子然后调用库就行了,很方便。
官方实例:
var file = new File(["Hello, world!"], "hello world.txt", {type: "text/plaincharset=utf-8"})saveAs(file)
上面示例会保存 “Hello, world!” 到 hello world.txt 文件,你想要 a.htm 就把第二个参数改成 a.htm 就成。
补充一下可能完全的不需要的内容,关于如何获取某元素的内容:
#region 下载文件/**//// <summary>
/// 从FTP服务器下载文件,使用与远程文件同名的文件名来保存文件
/// </summary>
/// <param name="RemoteFileName">远程文件名</param>
/// <param name="LocalPath">本地路径</param>
public bool DownloadFile(string RemoteFileName, string LocalPath)
{
return DownloadFile(RemoteFileName, LocalPath, RemoteFileName)
}
/**//// <summary>
/// 从FTP服务器下载文件,指定本地路径和本地文件名
/// </summary>
/// <param name="RemoteFileName">远程文件名</param>
/// <param name="LocalPath">本地路径</param>
/// <param name="LocalFilePath">保存文件的本地路径,后面带有"\"</param>
/// <param name="LocalFileName">保存本地的文件名</param>
public bool DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName)
{
byte[] bt = null
try
{
if (!IsValidFileChars(RemoteFileName) || !IsValidFileChars(LocalFileName) || !IsValidPathChars(LocalPath))
{
throw new Exception("非法文件名或目录名!")
}
if (!Directory.Exists(LocalPath))
{
throw new Exception("本地文件路径不存在!")
}
string LocalFullPath = Path.Combine(LocalPath, LocalFileName)
if (File.Exists(LocalFullPath))
{
throw new Exception("当前路径下已经存在同名文件!")
}
bt = DownloadFile(RemoteFileName)
if (bt != null)
{
FileStream stream = new FileStream(LocalFullPath, FileMode.Create)
stream.Write(bt, 0, bt.Length)
stream.Flush()
stream.Close()
return true
}
else
{
return false
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString()
throw ep
}
}
/**//// <summary>
/// 从FTP服务器下载文件,返回文件二进制数据
/// </summary>
/// <param name="RemoteFileName">远程文件名</param>
public byte[] DownloadFile(string RemoteFileName)
{
try
{
if (!IsValidFileChars(RemoteFileName))
{
throw new Exception("非法文件名或目录名!")
}
Response = Open(new Uri(this.Uri.ToString() + RemoteFileName), WebRequestMethods.Ftp.DownloadFile)
Stream Reader = Response.GetResponseStream()
MemoryStream mem = new MemoryStream(1024 * 500)
byte[] buffer = new byte[1024]
int bytesRead = 0
int TotalByteRead = 0
while (true)
{
bytesRead = Reader.Read(buffer, 0, buffer.Length)
TotalByteRead += bytesRead
if (bytesRead == 0)
break
mem.Write(buffer, 0, bytesRead)
}
if (mem.Length >0)
{
return mem.ToArray()
}
else
{
return null
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString()
throw ep
}
}
#endregion