скачивание файла с сервера node.js
Как это реализовать?
var http = require("http");
var fs = require('fs');
http.createServer(function(request, response){
let get = request.url;
get = get.replace("/favicon.ico", "");
get = get.replace("/?", "");
let fileContent = fs.readFileSync("ver.txt", "utf8");
if (get < fileContent) {
// Автоматически начинается скачивание файла "setup.exe" с сервера
}
response.end();
}).listen(3000);
Ответы (2 шт):
Автор решения: ОнтТон
→ Ссылка
response.writeHead(200, {
"Content-Type": "application/octet-stream",
"Content-Disposition": "attachment; filename=setup.exe"
});
fs.createReadStream('./setup.exe').pipe(response);
Вопрос решен.
Автор решения: DiD
→ Ссылка
Есть такой модуль node-static.
В принципе, если его установить глобально, то не нужно писать никакого кода, просто перейти в нужную папку для расшаривания и запустить короткой командой static.
# Расшарить текущую папку
$ static
serving "." at http://127.0.0.1:8080
# Расшарить папку /srv/www/public
$ static /srv/www/public
serving "public" at http://127.0.0.1:8080
# Другие варианты запуска
$ static -h
Либо короткий код поднимет веб-сервер с поддержкой заголовков кеширования в браузере (с отслеживанием факта изменений файлов на сервере), возможностью докачки файлов, а также ещё некоторыми плюшками.
var static = require('node-static');
var fileServer = new static.Server('/srv/www/public');
require('http').createServer(function (request, response) {
request.addListener('end', function () {
fileServer.serve(request, response, function (e, res) {
if (e && (e.status === 404)) { // Если файл не найден
fileServer.serveFile('/404.html', 404, {}, request, response);
}
});
}).resume();
}).listen(8080);