mirror of
https://github.com/strapi/strapi.git
synced 2025-07-18 22:45:47 +00:00

Fixed by adding a resource_type on the file which is required for the detroy method. It defaults to 'image', so if it isn't defined then it will try to remove an image with the passed public_id.
73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Module dependencies
|
|
*/
|
|
|
|
// Public node modules.
|
|
/* eslint-disable import/no-unresolved */
|
|
/* eslint-disable prefer-template */
|
|
const cloudinary = require('cloudinary').v2;
|
|
const intoStream = require('into-stream');
|
|
|
|
module.exports = {
|
|
provider: 'cloudinary',
|
|
name: 'Cloudinary',
|
|
auth: {
|
|
cloud_name: {
|
|
label: 'Cloud name',
|
|
type: 'text',
|
|
},
|
|
api_key: {
|
|
label: 'API Key',
|
|
type: 'text',
|
|
},
|
|
api_secret: {
|
|
label: 'API Secret',
|
|
type: 'password',
|
|
},
|
|
},
|
|
init: config => {
|
|
cloudinary.config({
|
|
cloud_name: config.cloud_name,
|
|
api_key: config.api_key,
|
|
api_secret: config.api_secret,
|
|
});
|
|
|
|
return {
|
|
upload(file) {
|
|
return new Promise((resolve, reject) => {
|
|
const upload_stream = cloudinary.uploader.upload_stream(
|
|
{ resource_type: 'auto' },
|
|
(err, image) => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
file.public_id = image.public_id;
|
|
file.resource_type = image.resource_type;
|
|
file.url = image.secure_url;
|
|
resolve();
|
|
}
|
|
);
|
|
intoStream(file.buffer).pipe(upload_stream);
|
|
});
|
|
},
|
|
async delete(file) {
|
|
try {
|
|
const response = await cloudinary.uploader.destroy(file.public_id, {
|
|
invalidate: true,
|
|
resource_type: file.resource_type || 'image',
|
|
});
|
|
if (response.result !== 'ok') {
|
|
throw {
|
|
error: new Error(response.result),
|
|
};
|
|
}
|
|
} catch (error) {
|
|
throw error.error;
|
|
}
|
|
},
|
|
};
|
|
},
|
|
};
|