node+multer實現(xiàn)圖片上傳的示例代碼
最近在學(xué)習(xí)node實現(xiàn)一個后臺管理系統(tǒng),用到了圖片上傳,有一些小問題記錄一下~
直接上代碼,問題都記錄在注釋里~
const express = require('express');
const path = require('path');
const multer = require('multer');
const app = new express();
// 設(shè)置靜態(tài)目錄 第一個參數(shù)為虛擬的文件前綴,實際上文件系統(tǒng)中不存在
// 可以用public做為前綴來加載static文件夾下的文件了
app.use('/public', express.static(path.join(__dirname, './static')));
// 根據(jù)當(dāng)前文件目錄指定文件夾
const dir = path.resolve(__dirname, '../static/img');
// 圖片大小限制KB
const SIZELIMIT = 500000;
const storage = multer.diskStorage({
// 指定文件路徑
destination: function(req, file, cb) {
// ?。?!相對路徑時以node執(zhí)行目錄為基準(zhǔn),避免權(quán)限問題,該目錄最好已存在*
// cb(null, './uploads');
cb(null, dir);
},
// 指定文件名
filename: function(req, file, cb) {
// filedname指向參數(shù)key值
cb(null, Date.now() + '-' + file.originalname);
}
});
const upload = multer({
storage: storage
});
app.post('/upload', upload.single('file'), (req, res) => {
// 即將上傳圖片的key值 form-data對象{key: value}
// 檢查是否有文件待上傳
if (req.file === undefined) {
return res.send({
errno: -1,
msg: 'no file'
});
}
const {size, mimetype, filename} = req.file;
const types = ['jpg', 'jpeg', 'png', 'gif'];
const tmpTypes = mimetype.split('/')[1];
// 檢查文件大小
if (size >= SIZELIMIT) {
return res.send({
errno: -1,
msg: 'file is too large'
});
}
// 檢查文件類型
else if (types.indexOf(tmpTypes) < 0) {
return res.send({
errno: -1,
msg: 'not accepted filetype'
});
}
// 路徑可根據(jù)設(shè)置的靜態(tài)目錄指定
const url = '/public/img/' + filename;
res.json({
errno: 0,
msg: 'upload success',
url
});
});
app.listen(3000, () => {
console.log('service start');
});
附上文檔參考鏈接:
express框架
path模塊
multer
最后再附贈一個node自動重啟工具nodemon
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NodeJS使用文件流解決大文件處理的內(nèi)存與時間效率問題
在 NodeJS 中,文件操作是常見的任務(wù)之一,然而,當(dāng)處理大文件時,直接將整個文件加載到內(nèi)存中可能會導(dǎo)致內(nèi)存溢出或性能瓶頸,為了解決這一問題,NodeJS 提供了文件流(Stream)機制,本文將詳細(xì)介紹文件流的優(yōu)點、使用方法、應(yīng)用場景,并探討背壓(Backpressure)的概念2025-01-01
node.js調(diào)用C++函數(shù)的方法示例
這篇文章主要介紹了node.js調(diào)用C++函數(shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
Win7系統(tǒng)中如何安裝高版本的NodeJS(親測有效!)
Node.js是基于Chrome V8引擎的JavaScript運行環(huán)境,能夠使JavaScript在服務(wù)器端運行,這篇文章主要給大家介紹了關(guān)于Win7系統(tǒng)中如何安裝高版本的NodeJS的相關(guān)資料,需要的朋友可以參考下2023-12-12
node.js報錯:Cannot find module ''ejs''的解決辦法
最近發(fā)現(xiàn)了node.js居然報錯了,錯誤提示為:Cannot find module 'ejs',后來找了找資料發(fā)現(xiàn)解決的方法其實很簡單,下面通過這篇文章來一起看看吧,希望對同樣遇到這個問題的朋友們能有所幫助。2016-12-12
node.js實現(xiàn)批量修改git項目的數(shù)據(jù)源(步驟詳解)
文章介紹了如何使用Node.js腳本批量修改大型項目中各個項目的Git地址域名,通過引入模塊、聲明域名常量、定義遍歷函數(shù)和修改目錄等步驟,實現(xiàn)一次性批量修改,從而節(jié)省時間和精力2024-11-11

