使用node上傳檔案或者資料到mongodb
阿新 • • 發佈:2019-01-02
上傳檔案分為兩種情況:
1.小檔案,不超過16M的
2.大檔案超過16M的
上傳資料比較簡單,直接上傳req.body裡面的內容就可以了
如果上傳的檔案是小於16M的比較簡單,直接使用ajax或者表單上傳,後臺接收後,儲存到mongodb中,需要注意的是用ajax上傳的時候有點麻煩,可以使用外掛ajaxFileUpload.js,接收檔案要用multer,因為body-parser不支援檔案
multer的配置
const multer = require('multer'); / /引入
var upload=multer({dest:'./public/img'}).any()
router.post('/update' ,upload,function(req,res,next){
//注意接收到的檔案要用fs重新命名一下,
var newName = req.files[0].path+pathLib.parse(req.files[0].originalname).ext;
//圖片路徑
var imgNewname ='img/'+req.files[0].filename+pathLib.parse(req.files[0].originalname).ext;
fs.rename(req.files[0].path,newName,function(){
if(err){
res.send('出錯了' )
};
if(req.files[0].size>1*1024*1024){ //判斷圖片大小
res.send('圖片超過1M');
}else{
// res.send('上傳成功');
var src = {
src:imgNewname, //圖片路徑
title:'一張圖片',
subTitle:'副標題'
};
var imgData = new Manage(src) //將圖片資訊放到Manage的集合中
imgData.save(function(err){ //儲存集合
if(err){
res.json({
status:500,
msg:err
})
}else{
res.json({
status:200,
msg:'儲存成功'
})
}
});
};
})
}
//從這個練習中可以看出資料庫中儲存的是圖片的路徑
查詢檔案時,從資料庫中拿到路徑,對應的找檔案,然後返回給前端
如果查詢的是txt等這樣的檔案,獲取到路徑後,要用fs的readFile()方法,將檔案讀出來再返回給前端