2012-02-26 15 views
2

我有一个非常简单的网络应用程序正在构建。没有PHP - 只是HTML & JavaScript。如何让用户将文件上传到我的网站,编辑并保存回

我想要得到用户的这种使用情况涉及到谁我的网站:

  1. 用户会选择从他/她的计算机的文本文件 - 例如:C:\目录\ file.txt的
  2. 他会在我的网页上打开这个文件(我是否必须使用php来做这件事?将文件上传到服务器,然后在我的网站上显示它?如果我不想在我的服务器中存储数据 - 只是为了让用户编辑它 - 我可以在客户端使用js执行所有这些操作吗?)
  3. 他将编辑一些文本
  4. 他将按下一个名为“保存”或“另存为”的按钮,它会自动将他的文件保存在他的电脑中。

因为我在文件管理方面无能为力 - 我很乐意得到一个提示,在那里开始对js库进行建议,以管理那些或一般信息。

感谢, 阿龙

P.S 在网上搜索“上传文件”给了我如何将文件上传到ftp很多结果 - 我的问题不是这个。

+0

JavaScript没有I/O功能。所以只使用JavaScript,你会有一个简单的页面。上传你需要一个服务器端(PHP/ASP /其他)。除非你使用NodeJs,否则JavaScript不会完成这项工作。 – Bakudan 2012-02-26 09:12:13

+0

你可以使用在线文件托管和使用他们的API - 不要以为有免费的代码将会非常复杂。你最好用自己喜欢的语言编写自己的服务器端代码,那里有大量的免费主机。 – 2012-02-26 09:24:04

回答

1

你似乎要求什么通常需要像php这样的服务器端代码。

话虽如此,有一些方法可以用JavaScript来做到这一点。该代码主要针对浏览器,并在保存时生成安全警告(,因为让JavaScript使用类似这样的资源通常是不安全的)。具体来说,我记得TiddlyWiki,它只使用JavaScript和HTML。看一看在这样的TW文件的代码,有代码中存在这样的:

// Returns null if it can't do it, false if there's an error, true if it saved OK 
function mozillaSaveFile(filePath,content) 
{ 
    if(window.Components) { 
     try { 
      netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
      var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 
      file.initWithPath(filePath); 
      if(!file.exists()) 
       file.create(0,0x01B4);// 0x01B4 = 0664 
      var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); 
      out.init(file,0x22,0x04,null); 
      out.write(content,content.length); 
      out.flush(); 
      out.close(); 
      return true; 
     } catch(ex) { 
      return false; 
     } 
    } 
    return null; 
} 

作为替代方案,取决于你所需要支持的浏览器,你可以看看HTML5的本地存储功能。

相关问题