Как получить изображения с сервера узла?

Опубликовано: 27 Июля, 2021

Изображения, файлы 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 мы можем выполнить следующие шаги:

  1. Проанализируйте входящий HTTP-запрос, чтобы узнать запрошенный путь.
  2. Проверьте, существует ли путь для ответа на статус как успешный или не найденный (необязательно).
  3. Получите расширение файла, чтобы установить тип содержимого.
  4. Укажите тип содержимого в заголовке и отправьте запрошенный файл в ответ.

Имя файла: 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, и вы увидите следующий результат:

Вывод вышеуказанной команды