溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nodejs中怎么利用express實(shí)現(xiàn)一個(gè)文件上傳功能

發(fā)布時(shí)間:2021-07-21 11:01:16 來源:億速云 閱讀:331 作者:Leah 欄目:web開發(fā)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)nodejs中怎么利用express實(shí)現(xiàn)一個(gè)文件上傳功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

步驟:

(1)使用express創(chuàng)建項(xiàng)目,默認(rèn)使用的是jade模板引擎,但是還是習(xí)慣于html,所以就改為html模板。
(2)在項(xiàng)目目錄中,通過npm install multiparty進(jìn)行安裝必要組件。
(3)修改views/index.html,添加一個(gè)文件上傳的form。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>上傳文件</title>
</head>
<body>
  上傳文件
  <form method='post', action='/file/uploading', enctype='multipart/form-data'>
    <input type="file" name="inputFile">
    <input type="submit" value="上傳">
  </form>
</body>
</html>

(4)修改routes/index.js,實(shí)現(xiàn)上傳頁面和上傳響應(yīng)的后臺(tái)代碼。

var express = require('express');
var router = express.Router();
var multiparty = require('multiparty');
var util = require('util');
var fs = require('fs');
/* 上傳頁面. */
router.get('/', function(req, res, next) {
 //res.render('./views/index');
 res.sendfile('./views/index.html');
});
/* 上傳 */
router.post('/file/uploading', function(req, res, next) {
  /* 生成multiparty對(duì)象,并配置上傳目標(biāo)路徑 */
  var form = new multiparty.Form();
  /* 設(shè)置編輯 */
  form.encoding = 'utf-8';
  //設(shè)置文件存儲(chǔ)路勁
  form.uploadDir = './public/files';
  //設(shè)置文件大小限制
  form.maxFilesSize = 2 * 1024 * 1024;
  // form.maxFields = 1000;  //設(shè)置所有文件的大小總和
  //上傳后處理
  form.parse(req, function(err, fields, files) {
    var filesTemp = JSON.stringify(files, null, 2);
    if(err) {
      console.log('parse error:' + err);
    }else {
      console.log('parse files:' + filesTemp);
      var inputFile = files.inputFile[0];
      var uploadedPath = inputFile.path;
      var dstPath = './public/files' + inputFile.originalFilename;
      //重命名為真實(shí)文件名
      fs.rename(uploadedPath, dstPath, function(err) {
        if(err) {
          console.log('rename error:' + err);
        }else {
          console.log('rename ok');
        }
      })
    }
    res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
    res.write('received upload:\n\n');
    res.end(util.inspect({fields: fields, files: filesTemp}))
  })
})
module.exports = router;

上述就是小編為大家分享的nodejs中怎么利用express實(shí)現(xiàn)一個(gè)文件上傳功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI