Configuration options for customizing how public IDs are generated for uploaded assets in Cloudinary.
Type Definition
export type PublicIDOptions = {
enabled?: boolean;
useFilename?: boolean;
uniqueFilename?: boolean;
generatePublicID?: (
filename: string,
prefix?: string,
folder?: string,
) => string;
};
Properties
Whether to enable custom public ID generation.
Whether to use the original filename as part of the public ID.
Whether to ensure unique filenames by adding a random suffix.
generatePublicID
(filename: string, prefix?: string, folder?: string) => string
Custom function to generate a public ID. If provided, this will override useFilename and uniqueFilename.Parameters:
filename - The original filename
prefix - The file prefix (if any)
folder - The base folder
Returns: A string to use as the public ID
Usage Examples
Basic Configuration
import { cloudinaryStorage } from 'payload-cloudinary';
export default buildConfig({
plugins: [
cloudinaryStorage({
collections: {
media: true,
},
config: {
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
},
publicID: {
enabled: true,
useFilename: true,
uniqueFilename: true,
},
}),
],
});
Custom Public ID Generator
import { cloudinaryStorage } from 'payload-cloudinary';
import { nanoid } from 'nanoid';
export default buildConfig({
plugins: [
cloudinaryStorage({
collections: {
media: true,
},
config: {
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
},
publicID: {
enabled: true,
generatePublicID: (filename, prefix, folder) => {
const timestamp = Date.now();
const randomId = nanoid(8);
const cleanFilename = filename.replace(/\.[^/.]+$/, '');
return `${cleanFilename}-${timestamp}-${randomId}`;
},
},
}),
],
});
Disable Custom Public IDs
import { cloudinaryStorage } from 'payload-cloudinary';
export default buildConfig({
plugins: [
cloudinaryStorage({
collections: {
media: true,
},
config: {
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
},
publicID: {
enabled: false,
},
}),
],
});