ホームページ >ウェブフロントエンド >jsチュートリアル >ファイルのアップロードとダウンロードにnodejs multerを使用するサンプルチュートリアルを共有します
この記事では主にnodemulterの実装ファイルアップロードに関する情報を詳しく紹介していますので、興味のある方はぜひ参考にしてください
この記事の例はみんなに共有されています。参考までに、nodejs でのファイルのアップロードとダウンロードの具体的なコードを示します。具体的な内容は次のとおりです
1. はじめに
ファイルのアップロードとダウンロードに関するデモを作成し、データ処理のミドルウェアとして Multer を選択しました。 。
multer の詳細については、中国語翻訳ドキュメント github.com/expressjs/multer/blob/master/doc/README-zh-cn.md または公式ドキュメント
2 を参照してください。
html formタグ postを利用してファイルをアップロードするにはenctype="multipart/form-data"を設定する必要があります。 サーバー上でmulterを使用する場合、基本的にはミドルウェアmulterを参照してください。 app.post('upload',upload .single('name'),function(){}); パラメータは HTML 入力内の名前です。 、しかし問題は、multerがサフィックスを気にせず、それをアップロードファイルにアップロードすることです。そのため、この機能を追加しました。
req.file はファイル情報で、元の名前を取得し、配列とスタック処理を通じてサフィックス「.jpg」を取得し、fs.renameSync() メソッドを使用してファイルの名前を変更し、元のサフィックスを追加します。このようにして、実際のアップロードは成功します。唯一の欠点はファイル名が変更されないことと、公式サイトの方法だとエラーが発生したので掘り下げませんでした。 。
インターネットは基本的にres.downloadとfsメソッドのexpressのカプセル化ですので、フォルダーを静的ファイルとして設定するように注意してください。問題は、クリックすると、画像でも音楽でも、ダウンロードするファイルが新しいページに表示されることです。 。これはとても気になるのですが、長い間探しても良い解決策が見つかりませんでした。 IE を使用して結果にアクセスする場合、ダウンロードまたは表示するオプションがあります。 。とても混乱するような。とにかく、一晩の仕事を終えて大満足です。 。ヒーヒー
サーバー
//index.js var fs = require('fs') var express = require('express') var multer = require('multer') const path = require('path'); var app = express(); var upload = multer({dest:'upload/'}); //多文件上传 (限定上传文件个数)(没有修改后缀) app.post('/upload-multi',upload.array('myfile',2),function(req,res,next){ res.send("2 done"); }) //单文件上传获取信息 app.post('/upload-single',upload.single('myfile'),function(req,res,next){ var file=req.file; // console.log("名称:%s",file.originalname); // console.log("mime:%s",file.mimetype); //以下代码得到文件后缀 name=file.originalname; nameArray=name.split(''); var nameMime=[]; l=nameArray.pop(); nameMime.unshift(l); while(nameArray.length!=0&&l!='.'){ l=nameArray.pop(); nameMime.unshift(l); } //Mime是文件的后缀 Mime=nameMime.join(''); console.log(Mime); res.send("done"); //重命名文件 加上文件后缀 fs.renameSync('./upload/'+file.filename,'./upload/'+file.filename+Mime); }) //文件下载尝试(chrome会直接在页面上展示。.最后也没有解决) //设置download文件夹为静态 才能下载 app.use('/download', express.static(path.join(dirname, 'download'))); // app.get('/download',function(req,res){ // var path='./download/aa.mp3'; // res.download(path,'aa.mp3'); // }); app.get('/download', function(req, res){ var file = dirname + '/download/aa.mp3'; res.download(file); }); app.get('/',function(req,res,next){ res.sendFile(dirname+"/index.html"); }) app.listen(3000);
クライアント
//index.html <!DOCTYPE html> <html> <head> <title>上传文件</title> <meta charset="utf-8"> </head> <body> <form enctype="multipart/form-data" action="/upload-single" method="post"> <input type="file" name="myfile"></input> <input type="submit" value="提交"></input> </form> <form enctype="multipart/form-data" action="/upload-multi" method="post"> <input type="file" name="myfile"></input> <input type="file" name="myfile"></input> <input type="submit" value="提交"></input> </form> <a href="download/aa.mp3" rel="external nofollow" >下载文件</a> </body> </html>
【関連推奨事項】
1.
無料のjsオンラインビデオチュートリアルJavaScript中国語リファレンスマニュアル php.cn Dugu Jiubian (3)- JavaScript ビデオチュートリアル以上がファイルのアップロードとダウンロードにnodejs multerを使用するサンプルチュートリアルを共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。