文件操作,例如 Read/Write 本地文件使用 Javascript 无服务器
File manipulations such as Read/Write local files using Javascript without server
我只是在尝试任务,使用 java 脚本的文件操作系统。正如我从 W3C 文件 API( https://www.w3.org/TR/FileAPI/ ) 中提到的那样,我们只能读取像
这样的本地文件
var file = "test.txt";
function readTextFile(file) {
var readFile;
if(window.XMLHttpRequest){
// for new browsers
readFile = new XMLHttpRequest();
}else{
//for old browsers like IE5 or IE6
readFile = new ActiveXObject("Microsoft.XMLHTTP");
}
readFile.open("GET", file, true);
readFile.onreadystatechange = function() {
if(readFile.readyState === 4) {
if(readFile.status === 200 || readFile.status == 0) {
//text will be displayed that read from the file
console.log(readFile.responseText);
}
}
}
readFile.send(null);
}
但看起来没有在没有服务器的情况下写入文件的选项。我试图从 http://www.whosebug.com/ 等网站获取解决方案,研究表明几乎没有可能性。
举个例子,我得到的是
来自 https://gist.github.com/Arahnoid/9925725
显示错误"TypeError: file.open is not a function."
所以我的问题是,是否可以在不使用服务器端脚本的情况下对本地文件进行文件操作(仅询问写入文件),或者是否有任何可用的扩展?
我们可以使用 PHP、Node.js、
等服务器脚本语言进行文件操作
提前致谢。
在您的代码中,它不是从本地文件读取 (test.txt
),而是向服务器发送 Ajax GET
请求并在服务器端读取文件。
读取本地文件(安装浏览器的机器上存储的文件)需要使用FileAPI,当前代码中没有使用。
要写文件到本地,直接用JavaScript写是不行的。否则,这将是一个巨大的安全漏洞。但是,您可以从 File 对象生成一个 URL,并将该 URL 用作 <a>
标记的 href
属性,以便用户可以下载和 "write to local"手动。
这里是读取&"write"本地文件的代码片段:
var inputElement = document.getElementById("input");
var reader = new FileReader();
var downloadLink = document.getElementById('downloadLink');
reader.onloadend = function(){
console.log(reader.result);
}
inputElement.addEventListener("change", handleFiles, false);
function handleFiles() {
var fileSelected = this.files[0]; /* now you can work with the file list */
reader.readAsBinaryString(fileSelected);
downloadLink.href = window.URL.createObjectURL(fileSelected);
}
<input type="file" id="input">
<a id="downloadLink" download>Download</a>
我只是在尝试任务,使用 java 脚本的文件操作系统。正如我从 W3C 文件 API( https://www.w3.org/TR/FileAPI/ ) 中提到的那样,我们只能读取像
这样的本地文件var file = "test.txt";
function readTextFile(file) {
var readFile;
if(window.XMLHttpRequest){
// for new browsers
readFile = new XMLHttpRequest();
}else{
//for old browsers like IE5 or IE6
readFile = new ActiveXObject("Microsoft.XMLHTTP");
}
readFile.open("GET", file, true);
readFile.onreadystatechange = function() {
if(readFile.readyState === 4) {
if(readFile.status === 200 || readFile.status == 0) {
//text will be displayed that read from the file
console.log(readFile.responseText);
}
}
}
readFile.send(null);
}
但看起来没有在没有服务器的情况下写入文件的选项。我试图从 http://www.whosebug.com/ 等网站获取解决方案,研究表明几乎没有可能性。
举个例子,我得到的是
来自 https://gist.github.com/Arahnoid/9925725
显示错误"TypeError: file.open is not a function."
所以我的问题是,是否可以在不使用服务器端脚本的情况下对本地文件进行文件操作(仅询问写入文件),或者是否有任何可用的扩展?
我们可以使用 PHP、Node.js、
等服务器脚本语言进行文件操作提前致谢。
在您的代码中,它不是从本地文件读取 (test.txt
),而是向服务器发送 Ajax GET
请求并在服务器端读取文件。
读取本地文件(安装浏览器的机器上存储的文件)需要使用FileAPI,当前代码中没有使用。
要写文件到本地,直接用JavaScript写是不行的。否则,这将是一个巨大的安全漏洞。但是,您可以从 File 对象生成一个 URL,并将该 URL 用作 <a>
标记的 href
属性,以便用户可以下载和 "write to local"手动。
这里是读取&"write"本地文件的代码片段:
var inputElement = document.getElementById("input");
var reader = new FileReader();
var downloadLink = document.getElementById('downloadLink');
reader.onloadend = function(){
console.log(reader.result);
}
inputElement.addEventListener("change", handleFiles, false);
function handleFiles() {
var fileSelected = this.files[0]; /* now you can work with the file list */
reader.readAsBinaryString(fileSelected);
downloadLink.href = window.URL.createObjectURL(fileSelected);
}
<input type="file" id="input">
<a id="downloadLink" download>Download</a>