ファイルのアップロードとダウンロードにnodejs multerを使用するサンプルチュートリアルを共有します

零下一度
リリース: 2017-05-12 09:46:36
オリジナル
2095 人が閲覧しました

この記事では主に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() メソッドを使用してファイルの名前を変更し、元のサフィックスを追加します。このようにして、実際のアップロードは成功します。唯一の欠点はファイル名が変更されないことと、公式サイトの方法だとエラーが発生したので掘り下げませんでした。 。


3.downloadファイルのダウンロード


インターネットは基本的に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オンラインビデオチュートリアル

2.

JavaScript中国語リファレンスマニュアル

3.

php.cn Dugu Jiubian (3)- JavaScript ビデオチュートリアル

以上がファイルのアップロードとダウンロードにnodejs multerを使用するサンプルチュートリアルを共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート