Javascript 客户端文件创建和下载
我们正在使用fusioncharts,它能够在客户端使用javascript导出csv数据,我们希望能够获取该数据并在浏览器中动态创建文件。可能吗?如何操作?您无法通过设计使用Javascript来接触本地磁盘Javascript 客户端文件创建和下载,javascript,html,Javascript,Html,我们正在使用fusioncharts,它能够在客户端使用javascript导出csv数据,我们希望能够获取该数据并在浏览器中动态创建文件。可能吗?如何操作?您无法通过设计使用Javascript来接触本地磁盘 我认为您可以将全部数据从javascript传递到服务器端代码(php、asp.net、java…),然后以某种方式将其流式传输到浏览器。尝试下面的代码允许您访问客户端文件系统,但这只适用于IE浏览器 <html> <body> <scrip
我认为您可以将全部数据从javascript传递到服务器端代码(php、asp.net、java…),然后以某种方式将其流式传输到浏览器。尝试下面的代码允许您访问客户端文件系统,但这只适用于IE浏览器
<html>
<body>
<script language="JScript">
<!--
function getsize()
{
var myObject, afile, size;
myObject = new ActiveXObject("Scripting.FileSystemObject");
afile = myObject.GetFile("c:\\test.txt")
size = afile.Size;
alert("The size of the test.txt file is:" + size);
}
-->
</script>
Get the size for the file "test.txt"
<form name="myForm">
<input type="Button" value="Get Size" onClick='getsize()'>
</form>
</body>
</html>
获取文件“test.txt”的大小
我建议您不要在客户端本地创建文件,而是提示用户(另存为对话框)在他想要的位置下载客户端生成的数据
通过javascript下载本地/客户端内容的解决方案并不简单。我已经使用smartclient html jsp实现了一个解决方案
以下是解决方案:
= 0) {
位=in.read();
输出。写入(位);
}
//System.out.println(“+”位);
}捕获(ioe异常ioe){
ioe.printStackTrace(系统输出);
}
out.flush();
out.close();
in.close();
%>
尝试{window.close();}catch(e){alert(e);}
此代码已在生产环境中测试和部署/工作,这也是跨浏览器功能。请查看。只要你对IE10+还满意,这是一个非常可靠的解决方案,根据浏览器的不同使用最佳方法进行优雅的处理。因为Marc的答案(愚蠢地)转换成了评论,而其他答案都没有真正回答这个问题,下面是答案:
<a id="a">Click me to DL something</a>
<script>
setupDownloadLink(document.getElementById("a"), "moose.txt", "ok")
function setupDownloadLink(element, filename, text) {
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text))
element.setAttribute('download', filename)
}
</script>
您想使用客户端Javascript创建文件吗?AFAIK只有js是不行的。这里似乎没有人提供自动客户端跨浏览器解决方案,所以这里是:@arinte我以前回答过这个问题,这里可能是nice解决方案的副本,为了示例,但我认为我们永远不应该以特定于浏览器的方式实现任何东西,我们是在2011年,而不是1998年,人们使用Chrome、Opera、Safari、IE、Firefox、移动浏览器……@Davide-我只是展示了一种方法来增加他的知识,我们可以在IE浏览器中实现,我的回答是如何满足他的一半要求。。我的回答不在这个问题的范围之外。。。你写的我已经知道了。。。我已经在回答中写道,这是工作表,我明白你的意思,但我想指出,我们不应该针对任何特定的浏览器或操作系统,上面的代码可能会在ipad或任何其他非windows平台上失败。文件系统API规范^^^已于2014年4月被删除。这完全是服务器端的,因此与5年后的问题无关,是吗?这会将整个资源放在DOM中,不是一个好方法。使用BLOBURI要好得多。
<a id="a">Click me to DL something</a>
<script>
setupDownloadLink(document.getElementById("a"), "moose.txt", "ok")
function setupDownloadLink(element, filename, text) {
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text))
element.setAttribute('download', filename)
}
</script>
// must be called in a click handler or some other user action
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}