2012-04-04 116 views
2

我想做的事情在我的浏览器两件事情:HTML5/JavaScript的:打开文本文件,加载到文本区域/保存textarea的内容到文本文件

  • 加载一个文本文件转换成文本区域(具有通过对作为选对话框)一个文本到文本文件的
  • 保存的内容(必须通过再次对话框)
  • 加载视频文件作为选件和抢的文件路径与视频播放器使用(1

我一直在网上寻找一段时间。只有通过ActiveXObjects才有一些解决方案,我不能使用(IE,认真?)。 HTML5文件API的可用性有限,因为我无法访问所选文件的路径。

我还发现保存textareas对话框,但他们忽略换行符出于某种奇怪的原因,我不知道如何解决这个问题,如果可能的话。

因此,这里有我的要求和选项:

  • 支持FF和Chrome
  • 的JavaScript,HTML5(和PHP,如果它是)
  • 可能的Silverlight,但我不能很熟悉,可能只复制和粘贴: -/
  • 它在Mac上工作,以及

回答

0

File API是HTML,它允许您访问数据,然后您可以在JavaScript中操作二进制blob,但正如所写的,根据您的要求,这在纯JS和HTML中是不可能的。

大阻滞剂是“保存到文本文件”。我能做到这一点的唯一方法是打开一个调用服务器端语言(如PHP)的iFrame,将标题中的内容类型设置为提示下载的类型。

Flash和Silverlight是在沙箱外运行的“客户端”技术,这听起来像是您现在唯一的选择。

+0

好吧,这听起来很糟糕。我想我不得不跳过这个想法,然后:-(无论如何感谢您的回复! – Momro 2012-04-04 21:16:37

1

JS运行在沙盒中。这意味着:不能访问文件系统上的文件。 HTML5文件API是第一个“本机”(如在非闪存或activex中)尝试授予对用户文件系统的有限访问权限。

0

我的想法:

加载文本文件:使用正常的HTML上传表单(如果你想脚本,也许通过AJAX提交)

保存的文本文件:使用一个文本和在提交,创建文件服务器端,然后提供它下载。 (如前所述,客户端脚本无权访问计算机的文件系统)

加载视频文件:服务器上的视频是否已经?否则将需要像文本文件一样上传。然后用一个flash插件从服务器上播放文件(然后你应该知道这个URI)

所有这些都是使用PHP实现起来相对简单。在PHP中,来自textarea的换行符保留为\ n。 教程:Form handling in PHPFile upload in PHP

编辑:自PHP运行服务器端的,你不应该碰到很多的,因为浏览器多样性的问题。或者,您也可以在Flash或Silverlight中执行所有这些操作,但从我的角度来看,这需要更多的学习,并且对用户来说不太舒服。

3

有一个肮脏的黑客工具,获取而不诉诸Flash或Silverlight,或者使用服务器所做的工作,并在大多数浏览器的工作原理:

var uriContent = "data:application/octet-stream," + encodeURIComponent(fileContentsAsString); 
window.open(uriContent, 'Save Your File'); 
+0

哇,他们使文件API等...你的声音更亲赞。 – n611x007 2013-12-04 20:14:21