Home >Web Front-end >JS Tutorial >How to implement file upload in nodejs+express

How to implement file upload in nodejs+express

亚连
亚连Original
2018-06-15 11:22:171539browse

This article mainly introduces the use of nodejs express to complete simple file upload functions. Friends who need it can refer to it

1. Create an express project

express -e nodejs-uploadfile

2. Download multer middleware

npm i multer or yarn multer

3. Reference multer in routes/index.js. Since file operations are also used, you must also reference the fs module and specify the file. Upload directory

const multer = require('multer');
const fs = require('fs');
const UPLOAD_PATH = './uploads'

Single file upload: The files in index.html are as follows (the type of the form file must be enctype="multipart/form-data"),

<form action="/upload" method="post" enctype="multipart/form-data">
 <input name="fileUpload" type="file" />
 <img src="" alt="">
 <button type="submit">上传</button>
</form>

in routes/ Add the upload route to index.js to handle the operation of uploading files

router.post(&#39;/upload&#39;, upload.single(&#39;fileUpload&#39;), function (req, res, next) {
 const { file } = req;
 fs.readFile(file.path, function(err, data) {
 fs.writeFile(`${UPLOAD_PATH}/${file.originalname}`, data, function (err) {
  if (err) res.json({ err })
  res.json({
  msg: &#39;上传成功&#39;
  });
 });
 })
})

If the uploaded file is an image, you can also use the FileReader object to preview the image

(function($){
 $(&#39;input&#39;).on(&#39;change&#39;, function(event) {
 var files = event.target.files,
  reader = new FileReader();
 if(files && files[0]){
  reader.onload = function (ev) {
   $(&#39;img&#39;).attr(&#39;src&#39;, ev.target.result);
  }
  reader.readAsDataURL(files[0]);
 }
 })
}(jQuery))

Multiple file upload: Multiple files The principle of uploading is the same as that of single file upload. The code is as follows:

router.post(&#39;/upload&#39;, upload.array(&#39;fileUpload&#39;), function (req, res, next) {
 const files = req.files;
 const response = [];
 const result = new Promise((resolve, reject) => {
 files.map((v) => {
  fs.readFile(v.path, function(err, data) {
  fs.writeFile(`${UPLOAD_PATH}/${v.originalname}`, data, function(err, data) {
   const result = {
   file: v,
   }
   if (err) reject(err);
   resolve(&#39;成功&#39;);
  })
  })
 })
 })
 result.then(r => {
 res.json({
  msg: &#39;上传成功&#39;,
 })
 }).catch(err => {
 res.json({ err })
 });
})

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to determine whether a variable name exists in an array in JavaScript

How to implement the delayed hiding function through JS

How to implement the timer function using Angular

How to implement the triangular arrow labeling function using Angular

The above is the detailed content of How to implement file upload in nodejs+express. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn