Supabase storage provider for Strapi v4 upload plugin
npm i strapi-provider-upload-supabase-v4
./config.js
with contentmodule.exports = ({ env }) => ({
// ...
upload: {
config: {
provider: "strapi-provider-upload-supabase-v4",
providerOptions: {
apiUrl: env("SUPABASE_API_URL"),
apiKey: env("SUPABASE_API_KEY"),
bucket: env("SUPABASE_BUCKET"),
directory: env("SUPABASE_DIRECTORY"),
options: {},
},
actionOptions: {
upload: {},
uploadStream: {},
delete: {},
},
},
},
// ...
});
.env
and add to themSUPABASE_API_URL="<Your Supabase url>"
SUPABASE_API_KEY="<Your Supabase api key>"
SUPABASE_BUCKET="strapi-uploads"
SUPABASE_DIRECTORY=""
./middlewares.js
with contentmodule.exports = ({ env }) => [
"strapi::errors",
{
name: "strapi::security",
config: {
contentSecurityPolicy: {
directives: {
"default-src": ["'self'"],
"img-src": ["'self'", "data:", "blob:", env("SUPABASE_API_URL")],
},
},
},
},
"strapi::cors",
"strapi::poweredBy",
"strapi::logger",
"strapi::query",
"strapi::body",
"strapi::session",
"strapi::favicon",
"strapi::public",
];
with values obtained from this page:
https://app.supabase.io/project//settings/api
Parameters options
, bucket
and directory
are optional and you can omit it, they will take the values shown in the example above.