繁体   English   中英

文件系统,用于管理用户的本地文件夹和文件

[英]File System to manage local folders and files of users

我有一个通过均值堆栈构建的网站。 我使用文件系统创建文件夹并在服务器中写入文件。 例如,在后端,我有:

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);
    });
});

现在,我想在用户的本地磁盘中创建文件夹。 例如,当我在Mac的localhost启动网站时,我希望它能够在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' }

有人这样做吗?

以下代码有效。 发布的json数据是

{“ dir”:“ /用户/ softTimur / theProject / public / tmp / DEF”}

我正在此库中使用带有密码提示符的sudo命令mkdir -p dirname

https://www.npmjs.com/package/sudo

const express = require('express')
const app = express()
const bodyParser =  require('body-parser')
var sudo = require('sudo');
var options = {
    cachePassword: true,
    prompt: 'Password, yo? '
};

app.use(bodyParser.json())

app.post('/', (req, res) => {
  var fs = require('fs');
  var dir = req.body.dir;
  console.log(dir)
  var child = sudo([ 'mkdir', '-p', dir ], options);
  console.log(child.spawnargs)
  // var child = sudo([ 'ls', '-l'], options)
  child.stdout.on('data', function (data) {
      console.log(data.toString());
      res.send(data.toString())
  });
})

app.listen(3000, () => console.log('Example app listening on port 3000!'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM