nodejs+express+multer搭建文件上傳文件預(yù)覽功能
前言
今天準(zhǔn)備用nodejs寫一個(gè)簡(jiǎn)單的圖片上傳接口,目的實(shí)現(xiàn)圖片上傳,上傳后的圖片可預(yù)覽。使用到的express,multer
一、express是什么?
Express 是一個(gè)簡(jiǎn)潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強(qiáng)大特性幫助你創(chuàng)建各種 Web 應(yīng)用,和豐富的 HTTP 工具。
二、multer是什么?
Multer 是一個(gè)node.js中間件,用于處理 multipart/form-data類型的表單數(shù)據(jù),主要用于上傳文件。
三、使用步驟
1.express使用
安裝express,新建一個(gè)js文件,我這里新建一個(gè)express_test.js的文件
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.sendStatus(200) }) //創(chuàng)建實(shí)例 var server = app.listen(8081, function () { var port = server.address().port console.log("應(yīng)用實(shí)例,訪問地址為 http://127.0.0.1:%s", port) })
終端輸入命令 node .\express_test.js
瀏覽器打開顯示如下
2.multer使用
安裝multer之后,在express_test.js所在目錄下新建一個(gè)文件夾,名為uploads,接著輸入如下代碼
var fs = require('fs');//文件管理相關(guān) var multer = require('multer');//nodejs中間件,用于處理上傳文件 // 創(chuàng)建 multer 實(shí)例并設(shè)置存儲(chǔ)引擎 const storage = multer.diskStorage({ destination: function (req, file, cb) { // 指定文件上傳的目錄 cb(null, 'uploads/'); }, filename: function (req, file, cb) { cb(null, file.originalname); } }); /*設(shè)置過濾器,可以上傳哪類文件*/ 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 });
以上代碼主要實(shí)現(xiàn)上傳目錄的配置,可上傳文件的類型。接著繼續(xù)輸入如下代碼
// 單個(gè)文件上傳 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:'上傳失敗,請(qǐng)上傳正確格式的圖片', data: null}) } });
再次運(yùn)行后,使用postman測(cè)試文件上傳,上傳成功
3.圖片預(yù)覽
文件上傳成功后,返回了圖片的網(wǎng)絡(luò)地址,將地址拷貝到瀏覽器中訪問,提示如下,訪問不到
別著急,我們接著寫入下面一行代碼
//設(shè)置訪問靜態(tài)文件目錄 app.use('/uploads', express.static('uploads'));
4.跨域設(shè)置
//跨越設(shè)置 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實(shí)現(xiàn)單圖片上傳的例子。
到此這篇關(guān)于nodejs+express+multer搭建文件上傳文件預(yù)覽功能的文章就介紹到這了,更多相關(guān)nodejs express multer文件上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
websocket實(shí)現(xiàn)Vue?3和Node.js之間的實(shí)時(shí)消息推送
使用?WebSocket?實(shí)現(xiàn)實(shí)時(shí)消息推送是一種高效的方式,可以在客戶端和服務(wù)器之間建立長(zhǎng)連接,實(shí)現(xiàn)低延遲的雙向通信,以下是一個(gè)簡(jiǎn)單的示例,展示如何在前端使用?Vue?3?和后端使用?Node.js?搭建一個(gè)?WebSocket?實(shí)現(xiàn)實(shí)時(shí)消息推送的應(yīng)用2024-06-06koa大型web項(xiàng)目中使用路由裝飾器的方法示例
這篇文章主要介紹了koa大型web項(xiàng)目中使用路由裝飾器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Node.js從字符串生成文件流的實(shí)現(xiàn)方法
這篇文章主要介紹了Node.js從字符串生成文件流的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08docker中編譯nodejs并使用nginx啟動(dòng)
這篇文章主要介紹了docker中編譯nodejs并使用nginx啟動(dòng)的相關(guān)資料,需要的朋友可以參考下2017-06-06node.js中的buffer.length方法使用說(shuō)明
這篇文章主要介紹了node.js中的buffer.length方法使用說(shuō)明,本文介紹了buffer.length的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12深入理解Node.js中CORS的三個(gè)重要響應(yīng)頭
CORS是一種安全機(jī)制,通過配置適當(dāng)?shù)捻憫?yīng)頭,服務(wù)器可以允許或限制外部域?qū)Y源的訪問,本文主要介紹了Node.js中CORS的三個(gè)重要響應(yīng)頭,感興趣的可以了解一下2024-12-12