HTML怎么保存文件到本地?

html-css037

HTML怎么保存文件到本地?,第1张

继续复制我之前的答案。

其实在浏览器里面是不行的。因为浏览器为了安全并没有给前端访问本地资源的权限,但是可以通过浏览器 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