77 lines
1.7 KiB
JavaScript
Raw Normal View History

2018-02-20 15:57:34 +01:00
'use strict';
/**
* Module dependencies
*/
// Public node modules.
const fs = require('fs');
const path = require('path');
2018-02-20 15:57:34 +01:00
module.exports = {
provider: 'local',
name: 'Local server',
init: ({ sizeLimit = 1000000 } = {}) => {
const verifySize = file => {
if (file.size > sizeLimit) {
throw strapi.errors.badRequest('FileToBig', {
errors: [
{
id: 'Upload.status.sizeLimit',
message: `${file.name} file is bigger than limit size!`,
values: { file: file.name },
},
],
});
}
};
2018-02-20 17:10:25 +01:00
return {
upload: file => {
verifySize(file);
2018-02-20 15:57:34 +01:00
return new Promise((resolve, reject) => {
2018-02-21 17:18:33 +01:00
// write file in public/assets folder
fs.writeFile(
path.join(
strapi.config.public.path,
`/uploads/${file.hash}${file.ext}`
),
file.buffer,
err => {
if (err) {
return reject(err);
}
2018-02-20 15:57:34 +01:00
file.url = `/uploads/${file.hash}${file.ext}`;
2018-02-20 15:57:34 +01:00
resolve();
}
);
2018-02-20 15:57:34 +01:00
});
},
delete: file => {
2018-02-20 15:57:34 +01:00
return new Promise((resolve, reject) => {
const filePath = path.join(
strapi.config.public.path,
`/uploads/${file.hash}${file.ext}`
);
2018-02-23 14:57:58 +01:00
if (!fs.existsSync(filePath)) {
return resolve("File doesn't exist");
2018-02-23 14:57:58 +01:00
}
2018-02-21 17:18:33 +01:00
// remove file from public/assets folder
fs.unlink(filePath, err => {
2018-02-20 15:57:34 +01:00
if (err) {
return reject(err);
}
resolve();
});
});
},
2018-02-20 15:57:34 +01:00
};
},
2018-02-20 15:57:34 +01:00
};