import { Context } from 'koa'; import config from '@config'; import { FileUploaderServer } from '@utils/bigFileSlice'; import CODE from '@utils/code'; const fileUploader = new FileUploaderServer(); const initUpload = async (ctx: Context): Promise => { const { name } = ctx.query; const uploadId = await fileUploader.initFilePartUpload(name); ctx.body = ctx.$response({ uploadId }); }; const uploadPart = async (ctx:Context): Promise => { const { buffer } = ctx.file; const { uploadId, partIndex } = ctx.request.body; if (!uploadId || uploadId === 'undefined') { ctx.status = 400; ctx.body = ctx.$response(null, '必填项参数缺失', false, CODE.MISS_PARAMS); } const { partFileMd5, partIndex: index } = await fileUploader.uploadPartFile(uploadId, partIndex, buffer); console.log({ partFileMd5, index }); ctx.body = ctx.$response({ partFileMd5, index }); }; const finishUpload = async (ctx:Context): Promise => { const { uploadId, name, md5 } = ctx.query; const { path: filePathOnServer } = await fileUploader .finishFilePartUpload(uploadId, name, md5); const suffixDir = config.bigFileUpload.suffixDir; const suffix = filePathOnServer.split(`/${suffixDir}/`)[1]; ctx.body = ctx.$response({ path: suffix }); }; export default { initUpload, uploadPart, finishUpload };