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

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으로 문의하세요.
node项目中如何使用express来处理文件的上传node项目中如何使用express来处理文件的上传Mar 28, 2023 pm 07:28 PM

怎么处理文件上传?下面本篇文章给大家介绍一下node项目中如何使用express来处理文件的上传,希望对大家有所帮助!

深入比较Express和Laravel:如何选择最佳框架?深入比较Express和Laravel:如何选择最佳框架?Mar 09, 2024 pm 01:33 PM

深入比较Express和Laravel:如何选择最佳框架?在选择一个适合自己项目的后端框架时,Express和Laravel无疑是两个备受开发者欢迎的选择。Express是基于Node.js的轻量级框架,而Laravel则是基于PHP的流行框架。本文将深入比较这两个框架的优缺点,并提供具体的代码示例,以帮助开发者选择最适合自己需求的框架。性能和扩展性Expr

Express和Laravel的对比分析:选择更适合你的框架Express和Laravel的对比分析:选择更适合你的框架Mar 10, 2024 pm 10:15 PM

Express和Laravel是两个非常流行的Web框架,分别代表了JavaScript和PHP两大开发语言的优秀框架。本文将针对这两个框架进行对比分析,帮助开发者选择更适合自己项目需求的框架。一、框架简介Express是一个基于Node.js平台的Web应用程序框架,它提供了一系列强大的功能和工具,使开发者可以快速搭建高性能的Web应用程序。Express

Express与Laravel:对比优劣势,你会选择哪个?Express与Laravel:对比优劣势,你会选择哪个?Mar 10, 2024 am 08:39 AM

Express与Laravel:对比优劣势,你会选择哪个?在Web开发领域,Express和Laravel是两个备受关注的框架。Express是一个基于Node.js的灵活且轻量级的Web应用框架,而Laravel是一个基于PHP的优雅且功能丰富的Web开发框架。本文将从功能、易用性、扩展性以及社区支持等方面对比Express和Laravel的优劣势,并结合

聊聊node+express怎么操作cookie聊聊node+express怎么操作cookieJun 22, 2022 am 10:01 AM

node+express怎么操作cookie?下面本篇文章就来给大家介绍一下用node操作cookie的方法,希望对大家有所帮助!

express和laravel哪个好express和laravel哪个好Jul 05, 2023 pm 01:16 PM

laravel好,有以下几点原因:1、Laravel使用PHP语言,具有优雅和直观的语法,并提供大量的功能和工具;2、Laravel有各种各样的扩展包、插件和解决方案;3、Laravel有非常完善和易懂的官方文档;4、Laravel对数据安全和用户认证提供了很好的支持;5、Laravel能够有效地分离业务逻辑和显示层;6、Laravel拥有庞大而活跃的社区,可以获得最新的技术。

如何利用React和Express搭建全栈JavaScript应用如何利用React和Express搭建全栈JavaScript应用Sep 26, 2023 pm 01:09 PM

如何利用React和Express搭建全栈JavaScript应用引言:React和Express是目前非常流行的JavaScript框架,它们分别用于构建前端和后端应用。本文将介绍如何结合使用React和Express来搭建一个全栈JavaScript应用。我们将逐步讲解如何搭建一个简单的TodoList应用,同时提供具体的代码示例。一、准备工作在开始之前

如何使用Node.js搭建一个简单的博客系统如何使用Node.js搭建一个简单的博客系统Nov 08, 2023 pm 06:45 PM

如何使用Node.js搭建一个简单的博客系统Node.js是一个基于ChromeV8引擎的JavaScript运行时环境,可以让JavaScript的运行速度更加高效。在Node.js的帮助下,我们可以使用JavaScript构建强大的服务器端应用程序,包括博客系统。本文将向您介绍如何使用Node.js搭建一个简单的博客系统,并为您提供具体的代码示例。请按

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구