在这个生成的上传处理器接收头像前完成代码审查。
接收已认证用户不超过 8 MiB 的 PNG,以服务端生成的键流式写入私有隔离区,完整验证并扫描图像,只发布干净结果,并清理失败数据。
JavaScript
async function acceptUpload(req, db, scan) {
const filename = req.headers['x-file-name'];
const path = `/srv/public/uploads/${filename}`;
const chunks = [];
for await (const chunk of req) chunks.push(chunk);
const body = Buffer.concat(chunks);
if (req.headers['content-type'] !== 'image/png') {
throw new Error('unsupported type');
}
await writeFile(path, body);
const row = await db.files.insert({
ownerId: req.user.id,
path,
contentType: req.headers['content-type'],
status: 'available',
});
await scan(path);
return { id: row.id, url: `/uploads/${filename}` };
}
生成代码仅作示例,不代表任何特定模型