【发布时间】:2018-07-15 03:15:21
【问题描述】:
我有一个由 mean-stack 构建的网站。我使用File System 在服务器中创建文件夹和写入文件。例如,在后端,我有:
router.post('/httpOnly/mkdir', function (req, res, next) {
var fs = require('fs');
var dir = req.body.dir;
fs.mkdir(dir, 0777, function (err) {
if (err) {
if (err.code === "EEXIST") console.log("folder exists")
else return console.log(err)
};
res.json(dir);
});
});
现在,我想在用户的本地磁盘中创建文件夹。例如,当我在localhost(Mac)中启动网站时,我希望它能够在我的 Mac 中创建一个文件夹。我尝试在前端跟踪代码:
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('fileSystem', {
url: '/fileSystem',
template: `hallo`,
controller: 'FileSystemCtrl'
})
}])
app.controller('FileSystemCtrl', ['$scope', '$http', function ($scope, $http) {
// var dir = "public/tmp/ABC" // creates well a folder under the folder of the project
var dir = "file:///USers/SoftTimur/theProject/public/tmp/DEF"
$http.post('/httpOnly/mkdir', { dir: dir })
.then(function () {
console.log("done")
})
}])
我希望使用var dir = "file:///USers/SoftTimur/theProject/public/tmp/DEF",可以在我的 Mac 中创建一个文件夹,但它失败并出现错误:
{ Error: ENOENT: no such file or directory, mkdir 'file:///USers/SoftTimur/theProject/public/tmp/DEF'
errno: -2,
code: 'ENOENT',
syscall: 'mkdir',
path: 'file:///USers/SoftTimur/theProject/public/tmp/DEF' }
有没有人可以这样做?
【问题讨论】:
-
现在想象一个恶意网站这样做。你觉得应该可以吗?
-
不是没有办法向用户请求权限吗?
-
您需要使用嵌套的 mkdir 方法并获得用户的许可
-
@yueyou 能否请您提供一些详细信息?
-
使用 sudo shell 库发布了答案。如果有任何问题,请随时告诉我
标签: javascript angularjs node.js filesystems mean-stack