Меню Закрыть

Node js upload file

Содержание

Загрузка файлов с помощью mutler

Одной из наиболее часто встречаемых задач в Node.js является загрузка файлов на сервер. В Node.js для этого нет встроенных инструментов, однако мы можем использовать дополнительные специальные пакеты. Одним из популярных подобных пакетов является mutler , который работает поверх Express.

Итак, для загрузки файлов создадим новый проект. Установим в него пакеты express и multer:

Определим в проекте новый файл index.html , в котором будет располагаться форма для загрузки файла:

Здесь важно отметить, что, чтобы на стороне сервера multer мог подхватить загруженный файл, у формы атрибут enctype должен иметь значение multipart/form-data .

В главном файле приложения app.js используем multer для получения отправленного файла:

В данном случае multer добавляется в виде компонента m >dest указывает на путь, по которому будет загружаться файл. В данном случае это папка uploads :

Если внутри проекта такой папки нет, то она автоматически будет создана.

Далее вызывается функция single() указывает, что загружаться будет один файл. Собственно на форме в index.html мы имеем поле для загрузки одного файла. В этот метод передается название поля, который исспользуется на форме для загрузки файл. Соответствующее поле в файле index.html называется "filedata", поэтому в функцию single() передается соответствующее значение.

Настроив multer, мы можем при обработке запроса получить файл через req.file .

Для тестирования приложения запустим приложение, обратимся к странице index.html и загрузим какой-нибудь файл:

После этого на консоли мы увидим что-то наподобие:

Здесь мы видим, какие метаданные получает сервер при загрузке файла, которые мы можем получть и как-нибудь использовать по своему усмотрению.

В результате в папке проекта будет создана подкаталог uploads, где мы найдем загруженный файл:

Читайте также:  Что означает слово роуминг

Также нам необязательно встраивать mutler глобально в конвейер обработки запросов в виде компонента middleware. Вместо этого мы можем определить использование mutler только для отдельных функций обработки запросов. Например:

The Formidable Module

There is a very good module for working with file uploads, called "Formidable".

The Formidable module can be downloaded and installed using NPM:

After you have downloaded the Formidable module, you can include the module in any application:

Upload Files

Now you are ready to make a web page in Node.js that lets the user upload files to your computer:

Step 1: Create an Upload Form

Create a Node.js file that writes an HTML form, with an upload field:

Example

This code will produce an HTML form:

var http = require(‘http’);

http.createServer(function (req, res) <
res.writeHead(200, <‘Content-Type’: ‘text/html’>);
res.write(»);
return res.end();
>).listen(8080);

Step 2: Parse the Uploaded File

Include the Formidable module to be able to parse the uploaded file once it reaches the server.

When the file is uploaded and parsed, it gets placed on a temporary folder on your computer.

Example

The file will be uploaded, and placed on a temporary folder:

Step 3: Save the File

When a file is successfully uploaded to the server, it is placed on a temporary folder.

The path to this directory can be found in the "files" object, passed as the third argument in the parse() method’s callback function.

To move the file to the folder of your choice, use the File System module, and rename the file:

Example

Include the fs module, and move the file to the current folder:

Читайте также:  Bloom эффект что это

I’m using node v0.10.26 and express v4.2.0 and I’m pretty new to node. I’ve been beating my head against my desk for the past three or so hours trying to get a file upload form working with node. At this point I’m just trying to get req.files to not return undefined. My view looks like this

Here are my routes

And here’s my app.js

I saw somewhere that including methodOverride() and bodyParser() was supposed to help but I can’t even launch my server if I add those lines.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.