How to Upload Image Using Supabase Storage
Next.js
Join us for free and unlock more features!
Access all features and save your workâno cost, no hassle.
Next.js
public, then we can start upload the image by creating the functionTypescript
index
export async function uploadImage(image: File) {
const supabase = createClient();
const { data, error } = await supabase.storage
.from(`BUCKET_NAME`)
.upload(`PATH`, image, {
cacheControl: "3600",
upsert: true, //Upsert to overwrite duplicate image
});
if (error) {
return {
error: error,
};
}
const {
data: { publicUrl },
} = supabase.storage.from(`BUCKET_NAME`).getPublicUrl(data.path);
return {
publicUrl,
error,
};
}PATH and BUCKET_NAME. Sadly, supabase does not have a function that automatically return image URL after uploaded the image so we must write a function to retrieve the image URL.Typescript
index
const { publicUrl, error } = await uploadImage(image);yarn add browser-image-compression , then you can create a compress image function.Typescript
index
import imageCompression from "browser-image-compression";
export async function compressImage(image: File, options: Options) {
return await imageCompression(image, options);
}uploadImage function.Typescript
index
const compressedImage = await compressImage(image, { maxSizeMB: 1 });
const { publicUrl, error } = await uploadImage(compressedImage);