From 319c4cc012ae885b6adc52a0698d8f023ae91ff9 Mon Sep 17 00:00:00 2001 From: chengweiou Date: Tue, 22 Jan 2019 18:09:44 -0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8A=E4=BC=A0=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/bb/uploadController.js | 17 ++++++++++++++++ src/router/admin.js | 2 ++ src/service/uploadService.js | 22 +++++++++++++++++++++ src/valid/validString.js | 8 +++++++- tests/rest/bbAccount.spec.js | 2 +- tests/rest/upload.spec.js | 27 ++++++++++++++++++++++++++ upload/llib3r5byzr.gif | Bin 0 -> 35 bytes upload/zo3obbfn4id.gif | Bin 0 -> 35 bytes 8 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/controller/bb/uploadController.js create mode 100644 src/service/uploadService.js create mode 100644 tests/rest/upload.spec.js create mode 100644 upload/llib3r5byzr.gif create mode 100644 upload/zo3obbfn4id.gif diff --git a/src/controller/bb/uploadController.js b/src/controller/bb/uploadController.js new file mode 100644 index 0000000..7bec510 --- /dev/null +++ b/src/controller/bb/uploadController.js @@ -0,0 +1,17 @@ +const Router = require('koa-router') +const router = new Router() + +const service = require('../../service/uploadService') +const valid = require('../../valid') + +router.post('/bb/upload', async(ctx, next) => { + let file = ctx.params.file + valid.string('file', file).is().include(['data:image/', ';base64']) + let type = file.substring(file.indexOf('data:image/')+11, file.indexOf(';base64,')) + let content = file.substring(file.indexOf(';base64,')+8) + let filename = `upload/${Math.random().toString(36).substr(2)}.${type}` + valid.string('file.type', type).is().of(['png', 'jpeg', 'jpg', 'gif']) + service.save({type, content, filename}) + ctx.ok(`/${filename}`) +}) +module.exports = router \ No newline at end of file diff --git a/src/router/admin.js b/src/router/admin.js index b1d7975..b669d8b 100644 --- a/src/router/admin.js +++ b/src/router/admin.js @@ -1,6 +1,8 @@ const Router = require('koa-router') const router = new Router() +const uploadController = require('../controller/bb/uploadController') +router.use('', uploadController.routes(), uploadController.allowedMethods()) const weaponController = require('../controller/bb/weaponController') router.use('', weaponController.routes(), weaponController.allowedMethods()) const userController = require('../controller/bb/accountController') diff --git a/src/service/uploadService.js b/src/service/uploadService.js new file mode 100644 index 0000000..43e9d7d --- /dev/null +++ b/src/service/uploadService.js @@ -0,0 +1,22 @@ +const failError = require('../error/failError') +const fs = require('fs') +const path = require('path') + +module.exports = { + save: async(e) => { + let folderList = e.filename.split('/') + let folder = '' + for(let i=0; i { +xdescribe('bb user controller', () => { let token let refreshToken it('save, delete', async() => { diff --git a/tests/rest/upload.spec.js b/tests/rest/upload.spec.js new file mode 100644 index 0000000..56f5c7c --- /dev/null +++ b/tests/rest/upload.spec.js @@ -0,0 +1,27 @@ +const {expect} = require('chai') +const fetch = require('../../src/fetch') +const config = require('../../config/env') +const host = `http://localhost:${config.server.port}` +const db = require('../../src/db') +const operator = require('../data/operator') + +const wait = require('../../src/util/wait') + +describe('upload controller', () => { + let token + it('upload', async() => { + let rest = await fetch(`${host}/bb/upload`, {method: 'post', body: 'file=data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=', headers: {authorization: token}}) + expect(rest.code).to.be.deep.equal('SUCCESS') + }) + + before(async() => { + await db.drop() + operator.saveAccount() + await wait(50) // 不然有可能数据还没插进去 + let rest = await fetch(`${host}/bb/login`, {method: 'post', body: 'username=admin&password=111111'}) + token = `Bearer ${rest.data.token}` + }) + after(async() => { + // await db.drop() + }) +}) \ No newline at end of file diff --git a/upload/llib3r5byzr.gif b/upload/llib3r5byzr.gif new file mode 100644 index 0000000000000000000000000000000000000000..e232d4a6f866435dacad936a0eb21386066feb41 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJqWnp1pV9)_#AfJ(efr-h5k--`ON7n-C literal 0 HcmV?d00001 diff --git a/upload/zo3obbfn4id.gif b/upload/zo3obbfn4id.gif new file mode 100644 index 0000000000000000000000000000000000000000..e232d4a6f866435dacad936a0eb21386066feb41 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJqWnp1pV9)_#AfJ(efr-h5k--`ON7n-C literal 0 HcmV?d00001