node.js は multer ミドルウェアを使用してファイルをアップロードします

青灯夜游
リリース: 2021-03-04 10:36:16
転載
1707 人が閲覧しました

この記事では、node.js が multer ミドルウェアを使用してポスト ファイル アップロードの問題を解決する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

node.js は multer ミドルウェアを使用してファイルをアップロードします

関連する推奨事項: 「nodejs チュートリアル

body-parser ミドルウェアは実際には「非常に不完全」であり、処理できるのは「単純なデータ」。
ご存知のとおり、post は次の 2 つの目的でよく使用されます:

  • データ送信 (投稿フォーム送信)

  • ファイルのアップロード

しかし、「有名な」ボディパーサーは最初のことしか実行できません。

不快...

この恐るべきモジュールは、以前に書いた画像ファイルのアップロード記事で使用されており、その核心は次のとおりです。

var form=new formidable.IncomingForm();
ログイン後にコピー

次のform .uploadDirフィールド/エンドモニタリング... はすべてこれに基づいています。

さて、ここでお話したいのは欠点です。body-parser と同様に、この強力なプラグインは画像形式の処理にしか使用できません。これも非常に残念です。


そこで、作者は「分断された山河を救える」と考えて、multerミドルウェアを見つけました(笑)

multerの応用例の一つミドルウェア :ファイル アップロード

(c)npm install express multer
ログイン後にコピー
const express = require('express'); const bodyparser = require('body-parser');//解析post数据 const multer = require('multer'); //解析Post文件 const fs = require('fs'); const pathlib = require('path'); //解析文件路径 var server = express(); var objMulter = multer({dest:'./www/upload'}); //用户上传文件存入dest目录下 server.use(objMulter.any()); //处理任何用户上传的文件 //处理post文件数据 server.post('/',function(req,res){ console.log(req.files[0].originalname); //req.files post文件 originalname为文件名 //获取原始拓展名+后缀名 var newName = req.files[0].path+pathlib.parse(req.files[0].originalname).ext; //重命名 fs.rename(req.files[0].path,newName,function(err){ if(err){ res.send('上传失败'); }else{ res.send('上传成功'); } }); }); server.listen(8081);
ログイン後にコピー

ここでは、req.body の代わりに req.files が使用されます。本文には (テキスト) 数値のみを保存できるため、ここで body-parser を使用すると、 console. 表示されるファイル名。

コード内のobjMulter.any()の機能は「すべてのデータを取得する」ことです。
any( の反対のsingle( もあります) ))、これにはパラメータ (フロントエンド! の名前) を指定する必要があります。たとえば、この例では、次のように記述することもできます:

server.use(objMulter.single('f1'));
ログイン後にコピー

フロントエンド コードは次のとおりです - ファイル送信、指定された形式はmultipart/form-dataです:

文件:
ログイン後にコピー

実際には、fs モジュールの rename (元のパス、新しいパス、コールバック) メソッドを使用して、ファイルの保存パスを強制的に変更することで「ファイルをアップロードする」という目的を達成します。


今日の拡張:
パス モジュールの replace メソッドは、ノードで「ファイルを指定する」ためによく使用されます (16/17 行目に注意してください):

var http = require('http'); var fs = require('fs'); var path = require('path'); var server = http.createServer(function (req, res) { var method = req.method; // 获取请求方法 if (method === 'POST') { // 暂只关注 post 请求 var dataStr = ''; req.on('data', function (chunk) { // 接收到数据,先存储起来 var chunkStr = chunk.toString() dataStr += chunkStr }); req.on('end', function () { // 接收数据完成,将数据写入文件 var fileName = path.resolve(__dirname, 'post.txt'); fs.writeFile(fileName, dataStr) res.end('OK'); }); } }); server.listen(8081);
ログイン後にコピー

プログラミング関連の知識については、プログラミング学習をご覧ください。 !

以上がnode.js は multer ミドルウェアを使用してファイルをアップロードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!