検索
ホームページウェブフロントエンドjsチュートリアルnodejsのexpress(4.x)_node.jsをベースにしたファイルアップロード機能の実装

Nodejs は、活力と無限の情熱に満ちた若いプログラミング フレームワークであり、常に急速に更新されています。 Nodejs をベースにした公式 Web 開発ライブラリである Express も同時に開発されており、毎年メジャー バージョン アップグレードが行われ、フレームワークの最下層では大規模な改修も行われています。 Express4 では、ミドルウェア ライブラリ接続が複数のよりきめの細かいライブラリに置き換えられました。明らかな利点は、これらのミドルウェアがより自由に更新およびリリースでき、Express リリース サイクルの影響を受けないことですが、問題はまた、以前のバージョンとの互換性がないため、コードを変更することを意味します。

一定期間の調査と探索の結果、アップロードを実現する方法は次のとおりであることがわかりました。 1. Express ミドルウェア multer モジュール (これは最も効率的で、express3.x でネイティブにサポートされ、express4.x では独​​立したモジュールになりました) )、2. connect-multiparty モジュール (ただし、現在は公式には推奨されていません)、3. multiparty モジュールを使用して実装します (この方法がより一般的です)、4. 強力なプラグインを使用して実装します (プラグインはシンプルでわかりやすい)

最も簡単な方法は、「c​​onnect-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

ただし、公式はこのミドルウェアの使用を推奨していません。エラー処理が面倒なため、「multiparty」を直接使用することをお勧めします。

「multiparty」を使用してバージョンを実装してみましょう。

1. Express (バージョン 4.11.x) を使用して、デフォルトの Jade をテンプレート エンジンとして使用してプロジェクトを作成します。

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. ページのアップロードと応答のアップロードのためのバックグラウンド コードを実装するために、routes/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ヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。