Commit 30a316c9 authored by nanahira's avatar nanahira

formidable

parent bd8f0bb2
Pipeline #2278 passed with stages
in 2 minutes and 22 seconds
...@@ -34,6 +34,7 @@ lerna-debug.log* ...@@ -34,6 +34,7 @@ lerna-debug.log*
!.vscode/extensions.json !.vscode/extensions.json
/ygopro-database /ygopro-database
/upload
.git* .git*
Dockerfile Dockerfile
......
...@@ -33,4 +33,5 @@ lerna-debug.log* ...@@ -33,4 +33,5 @@ lerna-debug.log*
!.vscode/launch.json !.vscode/launch.json
!.vscode/extensions.json !.vscode/extensions.json
/ygopro-database /ygopro-database
\ No newline at end of file /upload
\ No newline at end of file
...@@ -1130,6 +1130,14 @@ ...@@ -1130,6 +1130,14 @@
"@types/range-parser": "*" "@types/range-parser": "*"
} }
}, },
"@types/formidable": {
"version": "1.0.32",
"resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.0.32.tgz",
"integrity": "sha512-jOAB5+GFW+C+2xdvUcpd/CnYg2rD5xCyagJLBJU+9PB4a/DKmsAqS9yZI3j/Q9zwvM7ztPHaAIH1ijzp4cezdQ==",
"requires": {
"@types/node": "*"
}
},
"@types/graceful-fs": { "@types/graceful-fs": {
"version": "4.1.4", "version": "4.1.4",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz",
...@@ -3713,8 +3721,7 @@ ...@@ -3713,8 +3721,7 @@
"formidable": { "formidable": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
"integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="
"dev": true
}, },
"forwarded": { "forwarded": {
"version": "0.1.2", "version": "0.1.2",
......
import { Body, Controller, Get, Post, Query, Res } from '@nestjs/common'; import {
Body,
Controller,
Get,
Param,
Post,
Query,
Req,
Res,
UploadedFiles,
UseInterceptors,
} from '@nestjs/common';
import express from 'express'; import express from 'express';
import { AppService } from './app.service'; import { AppService } from './app.service';
import { UserInfo } from './entities/mycard/UserInfo'; import { UserInfo } from './entities/mycard/UserInfo';
import { config } from './config'; import { config } from './config';
import {
AnyFilesInterceptor,
FilesInterceptor,
} from '@nestjs/platform-express';
import { IncomingForm } from 'formidable';
@Controller('api') @Controller('api')
export class AppController { export class AppController {
...@@ -85,4 +101,39 @@ export class AppController { ...@@ -85,4 +101,39 @@ export class AppController {
const code = await this.appService.submitVote(body); const code = await this.appService.submitVote(body);
res.status(code).json({ code }); res.status(code).json({ code });
} }
@Post('upload')
uploadFile(@Req() req: express.Request, @Res() res: express.Response) {
const form = new IncomingForm();
form.encoding = 'utf-8';
form.uploadDir = 'upload/';
form.keepExtensions = true;
form.maxFieldsSize = 2 * 1024 * 1024;
form.parse(req, function (err, fields, files) {
if (err) {
console.log(err);
return res.status(500).send('upload image fail!');
}
const response: any = {};
if (err) {
response.code = 500;
} else {
response.code = 200;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
response.path = files.file.path;
}
res.json(response);
});
}
@Get('download/:id')
downloadFile(@Param('id') filename: string, @Res() res: express.Response) {
if (!filename) {
res.status(400).end('Missing filename.');
}
const filepath = `upload/${filename}`;
res.download(filepath, filename);
}
} }
...@@ -18,6 +18,7 @@ import qs from 'qs'; ...@@ -18,6 +18,7 @@ import qs from 'qs';
import { EloUtility } from './EloUtility'; import { EloUtility } from './EloUtility';
import { Votes } from './entities/mycard/Votes'; import { Votes } from './entities/mycard/Votes';
import { VoteResult } from './entities/mycard/VoteResult'; import { VoteResult } from './entities/mycard/VoteResult';
import { promises as fs } from 'fs';
const attrOffset = 1010; const attrOffset = 1010;
const raceOffset = 1020; const raceOffset = 1020;
...@@ -90,6 +91,15 @@ export class AppService { ...@@ -90,6 +91,15 @@ export class AppService {
this.chineseDirtyFilter = new Filter({ this.chineseDirtyFilter = new Filter({
chineseList: ChineseDirtyWords, chineseList: ChineseDirtyWords,
}); });
this.createUploadDirectory();
}
private async createUploadDirectory() {
try {
await fs.access('./upload');
} catch (e) {
await fs.mkdir('./upload');
}
} }
private async transaction( private async transaction(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment