mirror of
https://github.com/vbenjs/gf-vben-admin.git
synced 2025-01-24 04:10:20 +08:00
102 lines
2.2 KiB
JavaScript
102 lines
2.2 KiB
JavaScript
const Koa = require('koa');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const router = require('koa-router')();
|
|
const koaBody = require('koa-body');
|
|
const static = require('koa-static');
|
|
const cors = require('koa2-cors');
|
|
const app = new Koa();
|
|
|
|
app.use(cors());
|
|
|
|
app.use(
|
|
koaBody({
|
|
multipart: true,
|
|
formidable: {
|
|
maxFieldsSize: 20 * 1024 * 1024,
|
|
multipart: true,
|
|
},
|
|
})
|
|
);
|
|
|
|
const uploadUrl = 'http://localhost:3001/static/upload';
|
|
|
|
router.get('/', (ctx) => {
|
|
ctx.type = 'html';
|
|
const pathUrl = path.join(__dirname, '/static/upload.html');
|
|
ctx.body = fs.createReadStream(pathUrl);
|
|
});
|
|
|
|
const uploadFilePublic = function (ctx, files, flag) {
|
|
const filePath = path.join(__dirname, '/static/upload/');
|
|
let fileReader, fileResource, writeStream;
|
|
|
|
const fileFunc = function (file) {
|
|
fileReader = fs.createReadStream(file.path);
|
|
fileResource = filePath + `/${file.name}`;
|
|
|
|
writeStream = fs.createWriteStream(fileResource);
|
|
fileReader.pipe(writeStream);
|
|
};
|
|
const returnFunc = function (flag) {
|
|
console.log(flag);
|
|
console.log(files);
|
|
if (flag) {
|
|
let url = '';
|
|
for (let i = 0; i < files.length; i++) {
|
|
url += uploadUrl + `/${files[i].name},`;
|
|
}
|
|
url = url.replace(/,$/gi, '');
|
|
ctx.body = {
|
|
url: url,
|
|
code: 0,
|
|
message: '上传成功',
|
|
};
|
|
} else {
|
|
ctx.body = {
|
|
url: uploadUrl + `/${files.name}`,
|
|
code: 0,
|
|
message: '上传成功',
|
|
};
|
|
}
|
|
};
|
|
if (flag) {
|
|
// 多个文件上传
|
|
for (let i = 0; i < files.length; i++) {
|
|
const f1 = files[i];
|
|
fileFunc(f1);
|
|
}
|
|
} else {
|
|
fileFunc(files);
|
|
}
|
|
|
|
if (!fs.existsSync(filePath)) {
|
|
fs.mkdir(filePath, (err) => {
|
|
if (err) {
|
|
throw new Error(err);
|
|
} else {
|
|
returnFunc(flag);
|
|
}
|
|
});
|
|
} else {
|
|
returnFunc(flag);
|
|
}
|
|
};
|
|
|
|
router.post('/upload', (ctx) => {
|
|
let files = ctx.request.files.file;
|
|
if (files.length === undefined) {
|
|
uploadFilePublic(ctx, files, false);
|
|
} else {
|
|
uploadFilePublic(ctx, files, true);
|
|
}
|
|
});
|
|
|
|
app.use(static(path.join(__dirname)));
|
|
|
|
app.use(router.routes()).use(router.allowedMethods());
|
|
|
|
app.listen(3001, () => {
|
|
console.log('server is listen in 3001');
|
|
});
|