Как прочитать файл и вывести его содержимое в Input (NodeJs)?
app.get("/download", function (request, response) {
//response.sendFile(__dirname + "/txt/Example.txt");
let fileContent = fs.readFileSync("txt/Example.txt", "utf8");
})
В fileContent получаю содержимое файла. Как его вывести в input страницы index.html?
Ответы (2 шт):
Автор решения: ksa
→ Ссылка
Файл по запросу можно вернуть несколькими способами...
Вот несколько способов.
// 1 - (используя стримы) загружаем часть файла и отправляем ее, до тех пор пока не отправим весь файл
const getFile = async(req, res, next) => {
const fileStream = fs.createReadStream('path to file');
fileStream.pipe(res);
};
// 2 - (не используя стримы) загружаем файл полностью в память и затем отправляем
const getFile = async(req, res, next) => {
const file = fs.readFileSync('path to file');
res.send(file);
};
// 3 - (читается само содержимое) отправить сам текст файла
app.get("/download", function(req, res) {
fs.readFile("txt/Example.txt", "utf8", function(err, data) {
if (err) {
console.log(err); //вывод ишибок в консоль браузера
res.status(500).send("Error while reading the file");
return
}
res.send(fileContent);
})
})
Автор решения: vormax
→ Ссылка
в вашем коде используется fs.readFileSync() вместо fs.readFile(), что означает, что код будет ожидать завершения чтения файла перед продолжением работы. Это может привести к задержке в ответе на запрос в случае большого размера файла или проблем с его доступностью. В большинстве случаев рекомендуется использовать fs.readFile() с функцией обратного вызова.
Например, если у вас есть <input type="text" id="input-file">, вы можете использовать следующий код
app.get("/download", function (request, response) {
fs.readFile("txt/Example.txt", "utf8", function(err, data) {
if (err) {
console.log(err); //вывод ишибок в консоль браузера
response.status(500).send("Error while reading the file");
} else {
document.getElementById("input-file").value = fileContent;
}