>웹 프론트엔드 >JS 튜토리얼 >nodejs express(4.x)_node.js 기반으로 파일 업로드 기능 구현

nodejs express(4.x)_node.js 기반으로 파일 업로드 기능 구현

WBOY
WBOY원래의
2016-05-16 15:30:391493검색

Nodejs는 활력과 무한한 열정으로 가득 찬 젊은 프로그래밍 프레임워크이며 항상 빠르게 업데이트되었습니다. Nodejs 기반의 공식 웹 개발 라이브러리인 Express도 매년 주요 버전 업그레이드와 프레임워크 하단 레이어의 대대적인 수술까지 동시에 개발 중입니다. Express4에서는 미들웨어 라이브러리 연결이 더 세분화된 여러 라이브러리로 대체되었습니다. 분명한 이점은 이러한 미들웨어가 더 자유롭게 업데이트 및 릴리스될 수 있고 Express 릴리스 주기의 영향을 받지 않는다는 것입니다. 그러나 문제는 이전 버전과 호환되지 않으며 업그레이드한다는 것은 코드를 수정한다는 것을 의미합니다.

일정 기간의 연구와 탐색 끝에 업로드를 달성하는 방법은 다음과 같습니다. 1. Express Middleware Multer 모듈(가장 효율적이며 express3.x에서 기본적으로 지원되며 express4.x에서 독립 모듈이 됨) ), 2. connect-multiparty 모듈(그러나 현재는 공식적으로 권장되지 않음), 3. multiparty 모듈을 사용하여 구현(이 방법이 더 일반적임), 4. 강력한 플러그인을 사용하여 구현(플러그인은 간단하고 이해하기 쉽습니다)

가장 간단한 방법은 "connect-multiparty" 미들웨어를 통해 업로드하는 것입니다.

프로젝트에 npm install connect-multiparty를 설치합니다.

사용법:

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 
});

업로드 후 업로드된 파일은 임시 디렉터리에 임시 파일을 생성합니다. req.files를 인쇄하여 특정 파일 경로를 볼 수 있습니다.

댓글 달린 곳의 실제 디렉터리로 임시 파일을 이동하고 이름을 바꾸면 업로드 기능이 완료됩니다.

간단합니다.

공식 주소: https://www.npmjs.com/package/connect-multiparty

그러나 공식에서는 이 미들웨어를 사용하는 것을 권장하지 않습니다. 오류 처리가 더 번거롭기 때문에 직접 "다자간"을 사용하는 것이 좋습니다.

"다자간"을 사용하여 버전을 구현해 보겠습니다.

1. 기본 jade를 템플릿 엔진으로 사용하여 프로젝트를 생성하려면 express(버전 4.11.x)를 사용하세요.

2. 프로젝트 디렉토리에서 npm install multiparty를 통해 필요한 구성요소를 설치합니다.

3. views/index.jade를 수정하고 다음과 같이 간단한 파일 업로드 양식을 만듭니다.

 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. 페이지 업로드 및 응답 업로드를 위한 배경 코드를 구현하도록 경로/index.js를 수정합니다.

 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;

완료되었습니다. 이것으로 nodejs express(4.x) 기반의 파일 업로드 기능에 대한 소개를 마치겠습니다. nodejs express 관련 지식을 익히시는 모든 분들께 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.