Rumah  >  Artikel  >  hujung hadapan web  >  Melaksanakan fungsi muat naik fail berdasarkan nodejs express(4.x)_node.js

Melaksanakan fungsi muat naik fail berdasarkan nodejs express(4.x)_node.js

WBOY
WBOYasal
2016-05-16 15:30:391481semak imbas

Nodejs ialah rangka kerja pengaturcaraan muda, penuh dengan daya hidup dan semangat tanpa had, dan sentiasa dikemas kini dengan pantas. Express, perpustakaan pembangunan web rasmi berdasarkan Nodejs, juga sedang dibangunkan secara serentak, dengan peningkatan versi utama setiap tahun dan juga pembedahan besar pada lapisan bawah rangka kerja. Dalam Express4, sambungan perpustakaan middleware telah digantikan dengan berbilang perpustakaan yang lebih halus. Faedah yang jelas ialah perisian tengah ini boleh dikemas kini dan dikeluarkan dengan lebih bebas dan tidak akan terjejas oleh kitaran keluaran Ekspres tetapi masalahnya juga sangat sukar dengan versi sebelumnya, dan menaik taraf bermakna mengubah suai kod.

Selepas tempoh penyelidikan dan penerokaan, saya mendapati bahawa cara untuk mencapai muat naik ialah: 1. modul multer middleware ekspres (ini adalah yang paling cekap, disokong secara asli dalam express3.x, dan menjadi modul bebas dalam express4.x ), 2. modul sambung-berbilang pihak (tetapi ia tidak disyorkan secara rasmi sekarang), 3. Gunakan modul berbilang pihak untuk melaksanakan (kaedah ini lebih biasa), 4. Gunakan pemalam yang menggerunkan untuk melaksanakan (pemalam ialah ringkas dan mudah difahami);

Cara paling mudah ialah memuat naik melalui perisian tengah "sambung-berbilang pihak".

Pasang dengan npm install connect-multiparty dalam projek.

Penggunaan:

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/upload', multipartMiddleware, function(req, resp) {
 console.log(req.body, req.files);
 // don't forget to delete all req.files when done 
});
Selepas memuat naik, fail yang dimuat naik akan menjana fail sementara dalam direktori sementara Anda boleh mencetak req.files untuk melihat laluan fail tertentu.

Hanya alihkan dan namakan semula fail sementara ke direktori sebenar di tempat yang diulas untuk melengkapkan fungsi muat naik.

Mudah.

Alamat rasmi:

https://www.npmjs.com/package/connect-multiparty

Walau bagaimanapun, pegawai tidak mengesyorkan menggunakan middleware ini Adalah disyorkan untuk menggunakan "multiparty" secara langsung kerana pengendalian ralat lebih menyusahkan.

Mari gunakan "berbilang pihak" untuk melaksanakan versi.

1. Gunakan ekspres (versi 4.11.x) untuk mencipta projek, menggunakan jed lalai sebagai enjin templat.

2. Dalam direktori projek, pasang komponen yang diperlukan melalui npm install multiparty.

3. Ubah suai view/index.jade dan buat borang mudah untuk muat naik fail seperti berikut.

 extends layout
  block content                       form(method='post', action='/file/uploading', enctype='multipart/form-data')
    input(name='inputFile', type='file', multiple='mutiple')
    input(name='btnUp', type='submit',value='上传')
4. Ubah suai route/index.js untuk melaksanakan kod latar belakang untuk memuat naik halaman dan memuat naik respons.

 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('index', { title: 'Express' });
 });
 /* 上传*/
 router.post('/file/uploading', function(req, res, next){
  //生成multiparty对象,并配置上传目标路径
  var form = new multiparty.Form({uploadDir: './public/files/'});
  //上传完成后处理
  form.parse(req, function(err, fields, files) {
   var filesTmp = JSON.stringify(files,null,);
   if(err){
    console.log('parse error: ' + err);
   } else {
    console.log('parse files: ' + filesTmp);
    var inputFile = files.inputFile[];
    var uploadedPath = inputFile.path;
    var dstPath = './public/files/' + inputFile.originalFilename;
    //重命名为真实文件名
    fs.rename(uploadedPath, dstPath, function(err) {
     if(err){
      console.log('rename error: ' + err);
     } else {
      console.log('rename ok');
     }
    });
   }
   res.writeHead(, {'content-type': 'text/plain;charset=utf-'});
   res.write('received upload:\n\n');
   res.end(util.inspect({fields: fields, files: filesTmp}));
  });
 });
 module.exports = router;
Selesai. Ini melengkapkan pengenalan kepada fungsi muat naik fail berdasarkan nodejs express (4.x) saya harap ia akan membantu semua orang untuk mempelajari pengetahuan berkaitan nodejs.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn