upload service + hooks + types

This commit is contained in:
hamid zarghami
2025-11-15 11:10:42 +03:30
parent 1160147c81
commit d33ad86209
2 changed files with 34 additions and 4 deletions
+18 -4
View File
@@ -1,17 +1,31 @@
import axios from "@/config/axios"; import axios from "@/config/axios";
import type {
SingleUploadResponse,
MultipleUploadResponse,
} from "../types/Types";
export const singleUpload = async (file: File) => { export const singleUpload = async (
file: File
): Promise<SingleUploadResponse> => {
const formData = new FormData(); const formData = new FormData();
formData.append("file", file); formData.append("file", file);
const { data } = await axios.post(`/uploader/single-file`, formData); const { data } = await axios.post<SingleUploadResponse>(
`/uploader/single-file`,
formData
);
return data; return data;
}; };
export const multipleUpload = async (files: File[]) => { export const multipleUpload = async (
files: File[]
): Promise<MultipleUploadResponse> => {
const formData = new FormData(); const formData = new FormData();
files.forEach((file) => { files.forEach((file) => {
formData.append("files", file); formData.append("files", file);
}); });
const { data } = await axios.post(`/uploader/multi-file`, formData); const { data } = await axios.post<MultipleUploadResponse>(
`/uploader/multi-file`,
formData
);
return data; return data;
}; };
+16
View File
@@ -0,0 +1,16 @@
import type { IResponse } from "@/types/response.types";
export type UploadedFile = {
key: string;
url: string;
bucket: string;
};
export type SingleUploadResponseData = {
file: UploadedFile;
url: string;
};
export type SingleUploadResponse = IResponse<SingleUploadResponseData>;
export type MultipleUploadResponse = IResponse<SingleUploadResponseData[]>;