如何允许用户将文件上传到我的网站,编辑并保存回来

时间:2012-02-26 08:56:15

标签: javascript html text file-upload

我正在构建一个非常简单的Web应用程序。没有PHP - 只是html&的JavaScript。

我想为访问我网站的用户提供此用例:

  1. 用户将从他/她的计算机中选择一个文本文件 - 例如:c:\ directory \ file.txt
  2. 他会在我的网页上打开这个文件(我是否必须使用php?将文件上传到服务器然后在我的网站上显示?如果我不想在我的服务器中使用数据 - 只是为了让用户编辑它 - 我可以在客户端使用js执行所有这些操作吗?)
  3. 他将编辑部分文字
  4. 他会按下一个名为“保存”或“另存为”的按钮,它会自动将他的文件保存在他的电脑中。
  5. 因为我对文件管理毫无头绪 - 我很乐意获得一个提示,从哪里开始建议js库来管理它或关于它的一般信息。

    感谢, 阿龙

    P.S 在网上搜索“上传文件”给了我很多关于如何将文件上传到ftp的结果 - 我的问题与此无关。

1 个答案:

答案 0 :(得分:1)

您似乎要求的通常需要服务器端代码,如php。

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

// 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的本地存储功能。