【问题标题】:How to create a file and append data from html page ?如何从 html 页面创建文件并附加数据?
【发布时间】:2012-09-10 04:55:16
【问题描述】:

我的桌面上有一个需要输入的 html 文件。我将如何将该输入写入计算机上的文件?我是否必须使用另一种语言来做到这一点(即 python 或 javascript?),我将如何去做?在相关说明中,有什么方法可以让 javascript 从 html 文件中启动应用程序(目标是写入我计算机上的文件?

【问题讨论】:

  • 它需要将表单发送到某个地方......(我认为html将只支持 GET (我可能是错的)在另一个页面上你可以接收数据并写入它......这个链接可能帮助stackoverflow.com/questions/585234/…

标签: javascript python html file server-side


【解决方案1】:

现在可以使用当前仅 Chrome 和 Opera 支持的 FileWriter API 使用 Javascript 写入本地文件:

http://caniuse.com/#search=filewriter

这是来自 HTML5Rocks.com 的一些示例代码:

function onInitFs(fs) {

  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {

    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function(fileWriter) {

      fileWriter.onwriteend = function(e) {
        console.log('Write completed.');
      };

      fileWriter.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      // Create a new Blob and write it to log.txt.
      var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'});

      fileWriter.write(blob);

    }, errorHandler);

  }, errorHandler);

}

window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);

http://www.html5rocks.com/en/tutorials/file/filesystem/

【讨论】:

    【解决方案2】:

    简答:

    你不能。 Web 浏览器的安全性和沙盒功能可以防止这种情况发生。

    更长的答案:

    设置一个小型 LAMP 堆栈、Ruby on rails(本地主机服务器)、Python/Django(本地主机服务器)来托管您的 HTML/Web 表单。当您将数据输入表单时,本地守护程序可以处理将数据附加到文件中。

    使用 HTML5,您可以获得特殊的挂钩,可以让您写入本地文件系统,但这些挂钩可能是特定于浏览器的,并且可能会不时中断。

    【讨论】:

      【解决方案3】:

      您将不得不使用另一种语言。您应该看到Save file Javascript with file name(这需要您在您的网站上创建它并让用户下载它)和Python Save to file(要在HTML 中实现Python,请参见here)。或者在 Javascript 中,您可以使用 ActiveX 来保存文件 *:

      ActiveX

      function WriteToFile()
      {
      var fso = new ActiveXObject("Scripting.FileSystemObject");
      var s = fso.CreateTextFile("C:\\Test.txt", true);
      s.WriteLine('Hello');
      s.Close();
      }
      

      Python

      myFile = open('Failed.py', 'w')
      myFile.write('whatever')
      myFile.close()
      

      Javascript(非 ActiveX)

      uriContent = "data:application/octet-stream;filename=filename.txt," + 
                encodeURIComponent(codeMirror.getValue());
      newWindow=window.open(uriContent, 'filename.txt');
      

      **注意:我真的不推荐使用ActiveX,更多详情见ActiveX and Javascript do not mix*

      【讨论】:

      • 如何调用 python 脚本?使用 javascript 我只是将代码放在两个“
      • 在python中:使用闭包:with open('Failed.py','w') as myFile: myFile.write('whatever')
      • @Yevgen 感谢您的提示 :),我实际上并没有使用 python,但是由于这个问题需要更多的 javascript/html 知识,所以我想我还是会回答它
      【解决方案4】:

      浏览器有很多安全措施,可以防止对您的计算机进行这种级别的控制。这是一件好事。您不希望随机网站能够在访问它们的任何人的计算机上执行此操作。

      他们这样做的方法是编写一个您的浏览器可以访问的 Web 应用程序。浏览器可以向在您自己的计算机上运行的此应用程序提交数据,您的应用程序可以操作文件系统或做许多其他事情。

      所以不,浏览器不能做这些事情。是的,您必须使用“另一种语言”来创建在浏览器本身之外运行的东西。您可以使用 javascript(请参阅 node.js)或 python 来执行此操作,以及几乎任何其他存在的编程语言来创建这样的东西。选择哪个取决于您。

      【讨论】:

      • html5可能有办法,老实说不确定。
      【解决方案5】:

      您的问题有点难以回答。如果“需要一些输入”是指涉及form 元素,那么您可以通过PHP 之类的语言进行处理。

      如果您只是想编辑代码并开始学习 HTML,那么 Notepad/TextEdit 和 现代 网络浏览器是您最好的新朋友。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多