Файл загрузки nodejs
Я хочу загрузить test.txt с nodejs.
var fs = require('fs');
fs.readFile('./test.txt', function (err, data) {
if (err) {
throw err;
}
console.log(data);
});
Путь к серверу C:\server\test\server.js
. Test.txt находится в том же каталоге, но я получаю эту ошибку: Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'
Ответы
Ответ 1
Контуры Node разрешены относительно текущего рабочего каталога. Префикс вашего пути с помощью __dirname
, чтобы разрешить путь к местоположению вашего Node script.
var fs = require('fs');
fs.readFile( __dirname + '/test.txt', function (err, data) {
if (err) {
throw err;
}
console.log(data.toString());
});
Ответ 2
Вы должны использовать __dirname
, чтобы получить имя каталога, в котором находится файл, вместо текущего рабочего каталога:
fs.readFile(__dirname + "/test.txt", ...);
Ответ 3
С Node 0.12 теперь можно сделать это синхронно:
var fs = require('fs');
var path = require('path');
// Buffer mydata
var BUFFER = bufferFile('../test.txt');
function bufferFile(relPath) {
return fs.readFileSync(path.join(__dirname, relPath)); // zzzz....
}
fs
- это файловая система. readFileSync() возвращает буфер или строку, если вы спросите.
fs
правильно предполагает, что относительные пути являются проблемой безопасности. path
- это обход.
Чтобы загрузить в качестве строки, укажите кодировку:
return fs.readFileSync(path,{ encoding: 'utf8' });
Ответ 4
так что если он находится в том же каталоге, просто сделайте это
fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)})
Ответ 5
Если он в том же каталоге, он должен работать. Я тестировал один и тот же код с файлом name.txt
, и он отлично работает:
var fs = require('fs');
fs.readFile('./test.txt', function (err, data) {
if (err) {
throw err;
}
console.log(data.toString());
});