举一个具体的例子说明我的意思:
想象一下,我有一个看起来像这样的HTML页面
<div>
<div id="filecontents">
<!-- some html file contents -->
</div>
<input type="button" />
</div>
我希望能够点击按钮,它会显示“打开或保存文件”对话框。
这甚至可能吗?
这样做的目的是让我能够使用div的内容作为文件的数据源来打开一些html,文本或CSV。
答案 0 :(得分:7)
您可以使用HTML5 FileSystem API执行此操作。这里有几个教程:
浏览器支持现在很弱,但我的猜测是它最接近你想要的。
答案 1 :(得分:6)
不<input type="file" />
做那件事吗?
答案 2 :(得分:3)
我不明白所有这些答案都说没有插件就不可能。我会说使用标准Web技术绝对 ,但需要用户交互和服务器交互。当然,您无法通过网络在用户的计算机上阅读或书写任何内容,但您可以向用户询问文件(打开),并为用户提供文件(保存)。
要使用JavaScript打开文件,请使用<input type="file" />
。如果需要,可以使用JavaScript通过调用文件输入上的click()
方法(DOM方法,而不是jQuery方法)来显示打开的对话框。在onchange
处理程序中,提交表单,阅读上传的文件,并将内容写入您的页面。
要使用JavaScript保存文件,请将文件内容发送到服务器,准备文件,然后使用content-disposition
标题{{1}将其流回客户端}}。此标题导致文件被下载并保存用户的PC而不是在浏览器中显示。
这样做,你已经正式编写了第一个云计算应用程序!
答案 3 :(得分:2)
<input type="file" />
将允许您将文件上传到服务器,但您无法直接访问该文件,也无法通过javascript直接访问本地文件系统 - 这是一项安全功能。
如果要根据文件内容以某种方式更改页面,则必须进行往返:将文件上传到服务器,然后使用所需的更改呈现新页面并发送回到客户端。
我见过一些为javascript编写的类似文件流的代码(即flash实现),但是他们必须通过ajax请求“加载”文件,然后将数据作为javascript字符串读取。
答案 4 :(得分:1)
由于安全原因,您无法从javascript访问本地文件系统。但是,您可以接收文件via drag and drop in modern browsers或使用与您的javascript通信的java applet。
编辑:忘记了Michael Mior关联的新HTML5文件API。按照他的回答,他就是男人。如果您需要跨浏览器支持,请使用java applet,它很痛苦但有效。
答案 5 :(得分:0)
不是纯JavaScript。例如,您无法打开文件对话框来保存部分HTML。即使可以,出于安全原因,也无法使用JavaScript打开本地文件(否则,恶意网站可能会窃取您的所有数据)。
但是每个浏览器都允许编写插件(大多数都是用JavaScript编写的),所以你可以尝试这种方法。
答案 6 :(得分:-3)
使用此脚本并将其放在文件浏览器应显示的按钮中。
if foo["someArg"] == nil { foo["someArg"] = "default value" }