最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs multer實(shí)現(xiàn)文件上傳與下載

 更新時(shí)間:2017年05月10日 10:51:29   作者:Maci_yera  
這篇文章主要為大家詳細(xì)介紹了nodejs multer實(shí)現(xiàn)文件上傳與下載的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了nodejs實(shí)現(xiàn)文件上傳下載的具體代碼,供大家參考,具體內(nèi)容如下

1.介紹

做了一個(gè)關(guān)于文件上傳和下載的demo ,選擇了Multer 作為中間件進(jìn)行數(shù)據(jù)處理。

關(guān)于multer請參考中文翻譯文檔 https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md 或者官方文檔

2. upload 文件上傳

html form標(biāo)簽內(nèi)設(shè)置enctype=”multipart/form-data”是必須的,這樣才可以上傳文件,方式為post ,在服務(wù)端使用multer時(shí),基本與官網(wǎng)相同,引用中間件multer,app.post(‘\upload',upload.single(‘name'),function(){}); 指定單文件上傳,參數(shù)是html的input里面的name ,這樣就可以上傳成功,但是問題是multer不會管你的后綴,上傳到upload文件夾的文件有一個(gè)亂序名稱但是沒有后綴,所以我增加了這個(gè)功能。

req.file是文件信息,取得原名稱,經(jīng)過數(shù)組以及堆棧等處理得到后綴'.jpg' , 用fs.renameSync()方法重命名文件,加上本來的后綴。這樣真正的上傳成功。唯一的缺點(diǎn)是沒有實(shí)現(xiàn)改變文件名字,使用官網(wǎng)方式出現(xiàn)了錯誤,所以沒有深究。。

3.download 文件下載

網(wǎng)上基本上是express對res.download的封裝以及fs方法為主,注意要把文件夾設(shè)定為靜態(tài)文件。出現(xiàn)的問題是點(diǎn)擊之后就會在新頁面顯示要下載的文件,無論是圖片還是音樂。。這讓我很困擾,但是找了很久也沒有很好的解決。用IE訪問結(jié)果是會出現(xiàn)下載還是查看的選項(xiàng)。。很迷??傊褪沁@樣了,一晚上的努力,我很滿足。。嘻嘻

服務(wù)端

//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/'});

//多文件上傳 (限定上傳文件個(gè)數(shù))(沒有修改后綴)
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會直接在頁面上展示。.最后也沒有解決)
//設(shè)置download文件夾為靜態(tài) 才能下載
 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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs用gulp管理前端文件方法

    nodejs用gulp管理前端文件方法

    本篇文章給大家分享了nodejs用gulp管理前端文件的步驟方法以及優(yōu)缺點(diǎn)分析,有興趣的朋友參考下。
    2018-06-06
  • 基于nodejs 的多頁面爬蟲實(shí)例代碼

    基于nodejs 的多頁面爬蟲實(shí)例代碼

    本篇文章主要介紹了基于nodejs 的多頁面爬蟲 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Node.js+jade+mongodb+mongoose實(shí)現(xiàn)爬蟲分離入庫與生成靜態(tài)文件的方法

    Node.js+jade+mongodb+mongoose實(shí)現(xiàn)爬蟲分離入庫與生成靜態(tài)文件的方法

    下面小編就為大家?guī)硪黄狽ode.js+jade+mongodb+mongoose實(shí)現(xiàn)爬蟲分離入庫與生成靜態(tài)文件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Node.js?使用?zlib?內(nèi)置模塊進(jìn)行?gzip?壓縮

    Node.js?使用?zlib?內(nèi)置模塊進(jìn)行?gzip?壓縮

    這篇文章主要介紹了Node.js?使用?zlib?內(nèi)置模塊進(jìn)行?gzip?壓縮,nodejs為我們提供了一個(gè)zlib內(nèi)置模塊,我們可以使用它其中的gzip方法來對傳遞的數(shù)據(jù)進(jìn)行壓縮,從而提高數(shù)據(jù)傳遞效率,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • 基于Node.js實(shí)現(xiàn)一鍵生成個(gè)性化二維碼

    基于Node.js實(shí)現(xiàn)一鍵生成個(gè)性化二維碼

    這篇文章主要為大家詳細(xì)介紹了如何使用Node.js、Jimp和QRCode庫,結(jié)合一個(gè)簡單的腳本,通過命令行命令來快速給二維碼加上指定的背景,打造更有個(gè)性化的二維碼,感興趣的可以了解下
    2024-03-03
  • 詳解Nodejs 通過 fs.createWriteStream 保存文件

    詳解Nodejs 通過 fs.createWriteStream 保存文件

    本篇文章主要介紹了Nodejs 通過 fs.createWriteStream 保存文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • NodeJS實(shí)現(xiàn)視頻轉(zhuǎn)碼的示例代碼

    NodeJS實(shí)現(xiàn)視頻轉(zhuǎn)碼的示例代碼

    本篇文章主要介紹了NodeJS實(shí)現(xiàn)視頻轉(zhuǎn)碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Thinkjs3新手入門之如何使用靜態(tài)資源目錄

    Thinkjs3新手入門之如何使用靜態(tài)資源目錄

    最近在學(xué)習(xí)thinkjs3,發(fā)現(xiàn)有些地方還是有必要整理下的,下面這篇文章主要給大家介紹了關(guān)于Thinkjs3新手入門之如何使用靜態(tài)資源目錄的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • 解析NodeJs的調(diào)試方法

    解析NodeJs的調(diào)試方法

    本文主要介紹了NodeJs調(diào)試的步驟,以及實(shí)例方法,具有一定的參考作用,需要的朋友可以看下
    2016-12-12
  • 在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡單方法

    在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡單方法

    這篇文章主要介紹了在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡單方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08

最新評論

桐柏县| 高邑县| 平利县| 江门市| 泾川县| 西林县| 揭东县| 彰化市| 石河子市| 婺源县| 沙田区| 敦煌市| 晋宁县| 黄冈市| 岢岚县| 子洲县| 东台市| 依兰县| 大埔县| 贵阳市| 玉龙| 大田县| 杨浦区| 大悟县| 贵阳市| 清水河县| 独山县| 关岭| 潼关县| 平遥县| 阆中市| 鸡东县| 淮滨县| 汉寿县| 大余县| 大理市| 元阳县| 延长县| 会昌县| 同江市| 疏勒县|