Node.js + express實(shí)現(xiàn)上傳大文件的方法分析【圖片、文本文件】
本文實(shí)例講述了Node.js + express實(shí)現(xiàn)上傳大文件的方法。分享給大家供大家參考,具體如下:
對于大文件的上傳我們首先要引入一個(gè)叫做 multer 的庫:
npm install --save multer
關(guān)于這個(gè)庫,大家可以查閱官方文檔:
點(diǎn)擊跳轉(zhuǎn) https://www.npmjs.com/package/multer
我們先將庫引入我們的項(xiàng)目中:
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })// 文件會(huì)上傳到這個(gè)目錄
具體的 get 方法:
app.post('/upload', upload.single('logo'), function(req, res){//發(fā)送 json 數(shù)據(jù)到這個(gè)路由
console.dir(req.file);
res.send(req.p);
})
由于上傳文件要用到表當(dāng),所以我們這里先建立一個(gè)名為 form 表單:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<form action="/upload" method="post" enctype="multipart/form-data">
<h2>單圖上傳</h2>
<input type="file" name="logo">
<input type="submit" value="提交">
</form>
<body>
</body>
</html>
然后我們在 server 中引入該表單:
var fs = require('fs')
// /from 的 html 界面,用于演示上傳文件
app.get('/form',function(req, res){
var form = fs.readFileSync('./form.html',{ encoding : "utf8"});
res.send(form);
})
由 localhost:3000/form 運(yùn)行后上傳文件,就能在你項(xiàng)目的upload目錄下可看到:


雖然上傳成功,但w我n看到文件名是混亂的,而且路徑也是固定:
修改路徑和文件名:
// 更改大文件的存儲(chǔ)路徑
var createFolder = function(folder){
try{
fs.accessSync(folder);
}catch( e ){
fs.mkdirSync(folder);
}
};
var uploadFolder = './upload/';// 設(shè)定存儲(chǔ)文件夾為當(dāng)前目錄下的 /upload 文件夾
createFolder(uploadFolder);
// 磁盤存貯
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, uploadFolder );// 他會(huì)放在當(dāng)前目錄下的 /upload 文件夾下(沒有該文件夾,就新建一個(gè))
},
filename: function (req, file, cb) {// 在這里設(shè)定文件名
cb(null, file.originalname );
}
})
var upload = multer({ storage: storage })
效果:

最后,這里是視屏連接方便大家學(xué)習(xí):
https://www.bilibili.com/video/av24385038/?p=6
希望本文所述對大家nodejs程序設(shè)計(jì)有所幫助。
相關(guān)文章
nodejs的http和https下載遠(yuǎn)程資源post數(shù)據(jù)實(shí)例
這篇文章主要為大家介紹了nodejs的http和https下載遠(yuǎn)程資源post數(shù)據(jù)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
教你用Node.js與Express建立一個(gè)GraphQL服務(wù)器
GraphQL是一種通過強(qiáng)類型查詢語言構(gòu)建api的新方法,下面這篇文章主要給大家介紹了關(guān)于用Node.js與Express建立一個(gè)GraphQL服務(wù)器的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
node.js中的fs.writeFileSync方法使用說明
這篇文章主要介紹了node.js中的fs.writeFileSync方法使用說明,本文介紹了fs.writeFileSync的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
使用 Node.js 對文本內(nèi)容分詞和關(guān)鍵詞抽取
這篇文章主要介紹了使用 Node.js 對文本內(nèi)容分詞和關(guān)鍵詞抽取,需要的朋友可以參考下2017-05-05
node.js中的buffer.toString方法使用說明
這篇文章主要介紹了node.js中的buffer.toString方法使用說明,本文介紹了buffer.toString的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
nodejs實(shí)現(xiàn)獲取當(dāng)前url地址及url各種參數(shù)值
這篇文章主要介紹了nodejs實(shí)現(xiàn)獲取當(dāng)前url地址及url各種參數(shù)值,本文直接給出代碼實(shí)例,需要的朋友可以參考下2015-06-06
從零開始學(xué)習(xí)Node.js系列教程之SQLite3和MongoDB用法分析
這篇文章主要介紹了Node.js SQLite3和MongoDB用法,結(jié)合實(shí)例形式分析了SQLite3和MongoDB數(shù)據(jù)庫的初始化、連接、查詢等操作的實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04
詳解node Async/Await 更好的異步編程解決方案
這篇文章主要介紹了詳解Async/Await 更好的異步編程解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05

