📝 add documentation for save image helper
add new documentation for save image to filesystem and it's module helper
This commit is contained in:
@ -12,15 +12,19 @@ export const saveFile = async (
|
||||
file: File,
|
||||
{ folder, prefix }: SaveFileOptions
|
||||
): Promise<string> => {
|
||||
// create a unique file name using the prefix and a random UUID
|
||||
const ext = mime.extension(file.type) || "bin";
|
||||
const uniqueName = `${prefix ?? ""}${crypto.randomUUID()}.${ext}`;
|
||||
|
||||
// create the relative and absolute paths for the file
|
||||
const relativeFolder = path.join("uploads", folder);
|
||||
const relativePath = path.join(relativeFolder, uniqueName);
|
||||
const absolutePath = path.join(process.cwd(), relativePath);
|
||||
|
||||
// ensure the directory exists and write the file to the filesystem
|
||||
await mkdir(path.dirname(absolutePath), { recursive: true });
|
||||
await writeFile(absolutePath, Buffer.from(await file.arrayBuffer()));
|
||||
|
||||
// return the relative path to the saved file
|
||||
return relativePath;
|
||||
};
|
||||
|
||||
@ -2,10 +2,12 @@ import { saveFile } from "..";
|
||||
import { AppError } from "../../../error/instances/app";
|
||||
|
||||
export const saveAvatar = async (file: File): Promise<string> => {
|
||||
// Validate that the uploaded file is a single file
|
||||
if (Array.isArray(file)) {
|
||||
throw new AppError(415, "Can't upload more than 1 file");
|
||||
}
|
||||
|
||||
// Validate that the file type is one of the allowed types, currently only .jpg, .png, and .webp are allowed
|
||||
const allowedTypes = ["image/png", "image/jpeg", "image/webp"];
|
||||
if (!allowedTypes.includes(file.type)) {
|
||||
throw new AppError(
|
||||
@ -14,6 +16,7 @@ export const saveAvatar = async (file: File): Promise<string> => {
|
||||
);
|
||||
}
|
||||
|
||||
// Save the file using the saveFile helper function with specific folder and prefix
|
||||
return await saveFile(file, {
|
||||
folder: "avatar",
|
||||
prefix: "usr-",
|
||||
|
||||
@ -2,10 +2,12 @@ import { saveFile } from "..";
|
||||
import { AppError } from "../../../error/instances/app";
|
||||
|
||||
export const saveCommentBackground = async (file: File): Promise<string> => {
|
||||
// Validate that the uploaded file is a single file
|
||||
if (Array.isArray(file)) {
|
||||
throw new AppError(415, "Can't upload more than 1 file");
|
||||
}
|
||||
|
||||
// Validate that the file type is one of the allowed types, currently only .jpg, .png, and .webp are allowed
|
||||
const allowedTypes = ["image/png", "image/jpeg", "image/webp"];
|
||||
if (!allowedTypes.includes(file.type)) {
|
||||
throw new AppError(
|
||||
@ -14,6 +16,7 @@ export const saveCommentBackground = async (file: File): Promise<string> => {
|
||||
);
|
||||
}
|
||||
|
||||
// Save the file using the saveFile helper function with specific folder and prefix
|
||||
return await saveFile(file, {
|
||||
folder: "comment-backgorund",
|
||||
prefix: "cmnt-bg-",
|
||||
|
||||
Reference in New Issue
Block a user