perf: binary avatar

This commit is contained in:
archer
2023-06-14 22:26:11 +08:00
parent 7c159d8aba
commit 7c52cec0ea
16 changed files with 98 additions and 14 deletions

View File

@@ -0,0 +1,25 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { jsonRes } from '@/service/response';
import { connectToDatabase, Image } from '@/service/mongo';
// get the models available to the system
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
try {
await connectToDatabase();
const { id } = req.query;
const data = await Image.findById(id);
if (!data) {
throw new Error('no image');
}
res.setHeader('Content-Type', 'image/jpeg');
res.send(data.binary);
} catch (error) {
jsonRes(res, {
code: 500,
error
});
}
}

View File

@@ -0,0 +1,26 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { jsonRes } from '@/service/response';
import { connectToDatabase, Image } from '@/service/mongo';
import { authUser } from '@/service/utils/auth';
// get the models available to the system
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
try {
await connectToDatabase();
const { userId } = await authUser({ req, authToken: true });
const { base64Img } = req.body;
const base64Data = base64Img.split(',')[1];
const { _id } = await Image.create({
userId,
binary: Buffer.from(base64Data, 'base64')
});
jsonRes(res, { data: `/api/system/img/${_id}` });
} catch (error) {
jsonRes(res, {
code: 500,
error
});
}
}

View File

@@ -163,7 +163,7 @@ const Home = () => {
position={'absolute'}
userSelect={'none'}
>
<Image src="/icon/logo.png" w={['70px', '120px']} h={['70px', '120px']} alt={''}></Image>
<Image src="/icon/logo2.png" w={['70px', '120px']} h={['70px', '120px']} alt={''}></Image>
<Box
className={styles.textlg}
fontWeight={'bold'}

View File

@@ -114,12 +114,14 @@ const Info = (
const file = e[0];
if (!file) return;
try {
const base64 = await compressImg({
const src = await compressImg({
file,
maxW: 100,
maxH: 100
});
setValue('avatar', base64);
setValue('avatar', src);
setRefresh((state) => !state);
} catch (err: any) {
toast({

View File

@@ -104,12 +104,12 @@ const ModelEditForm = ({
const file = e[0];
if (!file) return;
try {
const base64 = await compressImg({
const src = await compressImg({
file,
maxW: 100,
maxH: 100
});
setValue('avatar', base64);
setValue('avatar', src);
setRefresh((state) => !state);
} catch (err: any) {
toast({

View File

@@ -14,6 +14,7 @@ import dynamic from 'next/dynamic';
import { useSelectFile } from '@/hooks/useSelectFile';
import { compressImg } from '@/utils/file';
import { useCopyData } from '@/utils/tools';
import Loading from '@/components/Loading';
import Avatar from '@/components/Avatar';
import MyIcon from '@/components/Icon';
@@ -112,14 +113,15 @@ const NumberSetting = ({ tableType }: { tableType: `${TableEnum}` }) => {
const file = e[0];
if (!file) return;
try {
const base64 = await compressImg({
const src = await compressImg({
file,
maxW: 100,
maxH: 100
});
onclickSave({
...userInfo,
avatar: base64
avatar: src
});
} catch (err: any) {
toast({