从浏览器使用node.js的文件系统function

我想创build一个从服务器中删除文件的function。 我打算使用这个function来恢复设置(即数据库文件)为默认状态。 我使用以下命令运行我的服务器:

node server.js 

我知道node.js的文件系统,但我不知道如何在浏览器端使用它。 我对这个问题做了一些解读,在我看来,由于安全原因,这种交互是不可能的。 我如何去做这件事?

您不能在浏览器中使用节点的fs ,并直接影响服务器上的文件系统。 fs仅用于本地可用的文件系统。 您将需要创build一个API或使用其他技术。

正如其他答案所说的,直接从客户端调用节点服务器的方法是不可能的,但是间接地,您可以通过从浏览器发送请求来完成。 在Node.JS部分你可以创build一个http服务器,客户端可以调用它,然后服务器可以执行一个动作。

但是请记住,以这种方式删除文件可能是危险的 ,您需要确保在服务器端,您允许删除您真正想删除的内容。 例如,您可以允许从特定的目录( 不只是任何文件 !)中删除文件。

有很多方法可以做到这一点。 您可以在纯节点( http.Server类)中使用它,也可以使用一些额外的模块,例如express (可帮助您仅使用几行代码创build一个http服务器)或jxm (它可以帮助您创build客户机 -服务器消息系统 – 也只有几行代码)。

由于我熟悉jxm,我已经为你做了一个简单的例子:

server.js

 var server = require('jxm'); var fs = require("fs"); server.setApplication("Hello World", "/", "STANDARD-KEY"); server.linkResource("/", ["./index.html", "text/html"]); server.addJSMethod("removeFile", function (env, param) {; if (fs.existsSync(param)) { fs.unlinkSync(param); server.sendCallBack(env, "File Deleted: " + param); } else { server.sendCallBack(env, "File does not exist: " + param); } }); server.start(); 

的index.html

 <!DOCTYPE html> <html> <head> <script src="/jx?ms=connect" type="text/javascript"></script> </head> <input type="button" id="btnRemove" value="Remove temp.txt file" disabled="disabled"/> <script type="text/javascript"> document.onjxready = function () { jxcore.Start(function (status) { var btn = document.getElementById('btnRemove'); btn.disabled = ""; btn.onclick = function () { jxcore.Call("removeFile", "temp.txt", function (ret) { alert(ret); }); }; }); }; </script> </body> </html> 

下面是你如何运行它。 一旦你需要安装jxm模块:

 $ npm install jxm 

现在你可以启动服务器了:

 $ node server.js 

之后,你可以去浏览器( http:// localhost:8000 / )并点击button。

即使jxm与JXcore一起工作得最好(它们都来自同一个团队),但它也可以与Node.JS一起工作(如上例所示)。

感谢所有的答案和评论。 他们帮助我指出了正确的方向。 我真正想要的是从客户端进行简单的API调用。 以下是我使用的快递:

 var app = express(); var settingsapirouter = require('./../../settings/settingsapi'); app.use('/api/settings', settingsapirouter); 

settingsapi ,我定义了:

 module.exports = function (...) { var router = express.Router(); router.route('/restoredb') .post(function (request, response) { ... }); } 

在客户端的JS:

 function restoreSettings() { $.ajax({ url: '/api/settings/restoredb', type: 'POST', }) .done(function() { console.log("success"); }); }