Наиболее буквальный ответ на ваш вопрос
Есть ли способ, чтобы получить доступ к корневой Linux («/») каталога через узел?
Это да, с помощью /
. Node.js не должен давать никакого специального лечения. Root - это каталог, как и любой другой.
На ваш код ...
fs.renameSync
занимает источник первого и второго пункта назначения. Вы переименовываете файл в .
, который представляет текущий рабочий каталог. Я даже не уверен, что вы можете переименовать что-то в .
. Я бы извлек имя файла из пути, а затем установил пункт назначения в корневой каталог плюс это имя файла.
Как получить доступ к корневому каталогу, который, как вы сказали, равен /
, ну, используйте /
.
Кстати, почему вы используете renameSync
с обратным вызовом и ничего после него? Согласно документации, это недопустимо. Это либо асинхронный вызов с обратным вызовом, либо синхронизация без обратного вызова. Таким образом, ваш обратный вызов, вероятно, не срабатывает.
var file = req.files.file;
fs.rename(file.path, '/' + path.basename(file.path), function(err) {
if(err) console.error(err.stack);
});
Кстати, я должен решительно выступать против применения писать файлы в корневой каталог Linux, по ряду причин:
- требует привилегий суперпользователя, который открывает банку с червями.
- Никто не задумывался, чтобы посмотреть там
- Малейшая ошибка может нанести непоправимый урон. Что делать, если желаемое имя файла «etc» или «boot»?
- Есть миллион лучших мест для хранения файлов, загружаемых с веб-сервера.
Вы попробовали просто '/'? "" означает текущий каталог, BTW. – dthree
вы можете использовать экспресс для этого var express = require ('express') , app = express() app.use (express.static (__ dirname + '/ Dirname')); –