nodejs+express+multer搭建文件上傳文件預覽功能
前言
今天準備用nodejs寫一個簡單的圖片上傳接口,目的實現(xiàn)圖片上傳,上傳后的圖片可預覽。使用到的express,multer
一、express是什么?
Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你創(chuàng)建各種 Web 應用,和豐富的 HTTP 工具。
二、multer是什么?
Multer 是一個node.js中間件,用于處理 multipart/form-data類型的表單數(shù)據(jù),主要用于上傳文件。
三、使用步驟
1.express使用
安裝express,新建一個js文件,我這里新建一個express_test.js的文件
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.sendStatus(200) }) //創(chuàng)建實例 var server = app.listen(8081, function () { var port = server.address().port console.log("應用實例,訪問地址為 http://127.0.0.1:%s", port) })
終端輸入命令 node .\express_test.js
瀏覽器打開顯示如下
2.multer使用
安裝multer之后,在express_test.js所在目錄下新建一個文件夾,名為uploads,接著輸入如下代碼
var fs = require('fs');//文件管理相關 var multer = require('multer');//nodejs中間件,用于處理上傳文件 // 創(chuàng)建 multer 實例并設置存儲引擎 const storage = multer.diskStorage({ destination: function (req, file, cb) { // 指定文件上傳的目錄 cb(null, 'uploads/'); }, filename: function (req, file, cb) { cb(null, file.originalname); } }); /*設置過濾器,可以上傳哪類文件*/ const fileFilter = (req, file, cb) => { if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') { cb(null, true); } else { cb(null, false); } } const upload = multer({ storage: storage, fileFilter: fileFilter });
以上代碼主要實現(xiàn)上傳目錄的配置,可上傳文件的類型。接著繼續(xù)輸入如下代碼
// 單個文件上傳 app.post('/upload', upload.single('file'), (req, res) => { console.log(req.file) if (req.file) { let file = req.file; let date = Date.now(); // 重命名文件 fs.renameSync('./uploads/' + file.filename, './uploads/' + date + file.originalname); res.json({code:200, msg: '上傳成功', imgUrl: 'http://127.0.0.1:8081' + '/uploads/' + date + file.originalname }) } else { res.json({code:401,msg:'上傳失敗,請上傳正確格式的圖片', data: null}) } });
再次運行后,使用postman測試文件上傳,上傳成功
3.圖片預覽
文件上傳成功后,返回了圖片的網(wǎng)絡地址,將地址拷貝到瀏覽器中訪問,提示如下,訪問不到
別著急,我們接著寫入下面一行代碼
//設置訪問靜態(tài)文件目錄 app.use('/uploads', express.static('uploads'));
4.跨域設置
//跨越設置 app.use(cors()); app.all('*',function(req,res,next){ res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); next() });
總結(jié)
以上就是nodejs下使用express+multer實現(xiàn)單圖片上傳的例子。
到此這篇關于nodejs+express+multer搭建文件上傳文件預覽功能的文章就介紹到這了,更多相關nodejs express multer文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
websocket實現(xiàn)Vue?3和Node.js之間的實時消息推送
使用?WebSocket?實現(xiàn)實時消息推送是一種高效的方式,可以在客戶端和服務器之間建立長連接,實現(xiàn)低延遲的雙向通信,以下是一個簡單的示例,展示如何在前端使用?Vue?3?和后端使用?Node.js?搭建一個?WebSocket?實現(xiàn)實時消息推送的應用2024-06-06