搜索文档
准备工作
创建空文件夹,控制台执行下面指令进行初始化。
shnpm init安装 express
shnpm i express安装 multer
shnpm i multer安装 body-parser
shnpm i body-parser创建
/router/file.js文件创建入口文件
app.jsjsconst express = require('express'); const bp = require('body-parser'); const app = express(); app.use(bp.urlencoded({ extended: true })); app.use(require('./router/file')); app.listen(3000, () => { console.log('服务启动成功:http://127.0.0.1:3000'); })
编写接口
router/file.js
js
const router = require('express').Router();
const multer = require('multer');
const fs = require('fs');
const root = '/www/wwwroot/file';
const ip = 'ip';
// 上传文件
router.post('/file/up', multer({ dest: root }).single('file'), ({ body, file }, res) => {
let { mimetype, filename } = file;
let { type, project } = body;
if (!type) type = 'any';
if (!project) project = 'detault';
let suffix = mimetype.split('/')[1]; // 后缀
let dir = `${root}/${type}/${project}`; // 文件目录
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true }); // 判断文件目录是否存在
fs.renameSync(`${root}/${filename}`, `${dir}/${filename}.${suffix}`);
res.send({
code: 200,
msg: 'ok',
data: `${ip}/${type}/${project}/${filename}.${suffix}`
});
});
// 删除文件
router.post('/file/del', ({ body }, res) => {
let data = { code: 200, msg: 'ok' };
let { url } = body;
if (!url) {
data.code = 500;
data.msg = 'url 不能为空';
} else {
url = url.replaceAll(ip, root);
if (!fs.existsSync(url)) {
data.code = 501;
data.msg = '文件不存在';
} else fs.rmSync(url);
}
res.send(data);
});
module.exports = router;