1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import Router from '@koa/router';
- import { koaBody } from 'koa-body';
- import { copyFile, rm, access, mkdir } from 'node:fs/promises';
- import { UPLOAD_DIR, STATIC } from '../app.config.mjs';
- const router = new Router();
- router
- .get('/', (ctx) => {
- ctx.body = 'Koa App.';
- })
- .put(
- '/upload',
- koaBody({
- multipart: true,
- formidable: {
- keepExtensions: true,
- uploadDir: UPLOAD_DIR,
- },
- onError(err, ctx) {
- ctx.body = {
- code: 1,
- msg: err,
- };
- },
- }),
- async (ctx) => {
- let filename = ctx.request.files.file.newFilename;
- let srcFile = `./${UPLOAD_DIR}/${filename}`;
- let destFile = srcFile;
-
- const { folder } = ctx.request.body;
-
- if (folder) {
-
- destFile = `./${UPLOAD_DIR}/${folder}/${filename}`;
- try {
-
- let isExist = await access(`./${UPLOAD_DIR}/${folder}`).catch(
- () => false
- );
-
- if (isExist == false) {
-
- await mkdir(`./${UPLOAD_DIR}/${folder}`, { recursive: true });
- }
- await copyFile(srcFile, destFile);
-
- await rm(srcFile);
- } catch (error) {
- console.error(error);
- }
- }
-
- ctx.body = {
- code: 0,
- data: {
- path: `${UPLOAD_DIR.replace(STATIC, '')}/${folder}/${filename}`,
- filename,
- },
- msg: '上传成功',
- };
- }
- );
- export default router;
|