diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index ed33b6ba3..34922a893 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -730,8 +730,8 @@ export class ProblemFilesHandler extends ProblemDetailHandler { files.push({ type, name: filename, - size: statSync(this.request.files.file.filepath).size, - data: () => this.request.files.file.filepath, + size: file.size, + data: () => file.filepath, }); } if (!this.user.hasPriv(PRIV.PRIV_EDIT_SYSTEM)) { diff --git a/packages/hydrooj/src/model/problem.ts b/packages/hydrooj/src/model/problem.ts index f2c3904ee..9d1dc3242 100644 --- a/packages/hydrooj/src/model/problem.ts +++ b/packages/hydrooj/src/model/problem.ts @@ -603,11 +603,14 @@ export class ProblemModel { if (options.delSource) await fs.remove(tmpdir); } - static async export(domainId: string, pidFilter?:string) { + static async export(domainId: string, pidFilter = '') { console.log('Exporting problems...'); const tmpdir = path.join(os.tmpdir(), 'hydro', `${Math.random()}.export`); await fs.mkdir(tmpdir); - const pdocs = await ProblemModel.getMulti(domainId, pidFilter ? { pid: pidFilter } : {}, ProblemModel.PROJECTION_PUBLIC).toArray(); + const pdocs = await ProblemModel.getMulti( + domainId, pidFilter ? { pid: new RegExp(pidFilter) } : {}, + ProblemModel.PROJECTION_PUBLIC, + ).toArray(); if (process.env.HYDRO_CLI) logger.info(`Exporting ${pdocs.length} problems`); for (const pdoc of pdocs) { if (process.env.HYDRO_CLI) logger.info(`Exporting problem ${pdoc.pid || (`P${pdoc.docId}`)} (${pdoc.title})`);