Как получить изображения с сервера узла?
Изображения, файлы CSS, файлы JavaScript и другие файлы, загружаемые клиентом с сервера, называются статическими файлами. Эти статические файлы можно получить с помощью экспресс-фреймворка и без его использования. Методы, которые можно использовать для обслуживания статических файлов, обсуждаются ниже.
Изображение, к которому нужно получить доступ (geeksforgeeks.png) , помещается в папку изображений , как показано в дереве каталогов ниже:
Дерево каталогов:
server.js package.json пакет-lock.json нодмулы | - * изображений | - geeksforgeeks.png общественный | - index.html
Метод 1. Использование среды Express. При использовании платформы Express встроенная функция промежуточного программного обеспечения express.static () может использоваться для обслуживания статических файлов.
Синтаксис:
expess.static (корень, [параметры])
Параметры: этот метод принимает два параметра, как указано выше и описано ниже:
- root: указывает каталог, из которого будут обслуживаться статические файлы. По сути, все статические файлы находятся в общедоступном каталоге.
- options: используется для указания других параметров, о которых вы можете узнать больше здесь.
Пример: следующий код является примером того, как получить изображение или другие статические файлы с сервера узла.
Имя файла: server.js
Javascript
// Requiring module const express = require( 'express' ); // Creating express object const app = express(); // Defining port number const PORT = 3000; // Function to serve all static files // inside public directory. app.use(express.static( 'public' )); app.use( '/images' , express.static( 'images' )); // Server setup app.listen(PORT, () => { console.log(`Running server on PORT ${PORT}...`); }) |
Шаги по запуску программы:
1. Установите экспресс, используя следующую команду:
npm установить экспресс
2. Запустите файл server.js, используя следующую команду:
узел server.js
3. Откройте любой браузер и перейдите по адресу http: // localhost: 3000 / images / geeksforgeeks.png, и вы увидите следующий результат:
Метод 2: Без использования экспресс-фреймворка: для обслуживания статических файлов с использованием основных принципов Node.js мы можем выполнить следующие шаги:
- Проанализируйте входящий HTTP-запрос, чтобы узнать запрошенный путь.
- Проверьте, существует ли путь для ответа на статус как успешный или не найденный (необязательно).
- Получите расширение файла, чтобы установить тип содержимого.
- Укажите тип содержимого в заголовке и отправьте запрошенный файл в ответ.
Имя файла: server.js
Javascript
// Requiring modules const http = require( "http" ); const fs = require( "fs" ); const path = require( "path" ); const url = require( "url" ); // Creating server to accept request http.createServer((req, res) => { // Parsing the URL var request = url.parse(req.url, true ); // Extracting the path of file var action = request.pathname; // Path Refinements var filePath = path.join(__dirname, action).split( "%20" ).join( " " ); // Checking if the path exists fs.exists(filePath, function (exists) { if (!exists) { res.writeHead(404, { "Content-Type" : "text/plain" }); res.end( "404 Not Found" ); return ; } // Extracting file extension var ext = path.extname(action); // Setting default Content-Type var contentType = "text/plain" ; // Checking if the extention of // image is '.png' if (ext === ".png" ) { contentType = "image/png" ; } // Setting the headers res.writeHead(200, { "Content-Type" : contentType }); // Reading the file fs.readFile(filePath, function (err, content) { // Serving the image res.end(content); }); }); }) // Listening to the PORT: 3000 .listen(3000, "127.0.0.1" ); |
Шаги по запуску программы:
1. Установите экспресс, используя следующую команду:
npm установить экспресс
2. Запустите файл server.js, используя следующую команду:
узел server.js
3. Откройте любой браузер и перейдите по адресу http: // localhost: 3000 / images / geeksforgeeks.png, и вы увидите следующий результат: