mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-04 11:54:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
/**
 | 
						|
 * Module dependencies
 | 
						|
 */
 | 
						|
 | 
						|
// Public node modules.
 | 
						|
const fs = require('fs');
 | 
						|
const path = require('path');
 | 
						|
const { errors } = require('@strapi/plugin-upload');
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  init({ sizeLimit = 1000000 } = {}) {
 | 
						|
    const verifySize = file => {
 | 
						|
      if (file.size > sizeLimit) {
 | 
						|
        throw errors.entityTooLarge();
 | 
						|
      }
 | 
						|
    };
 | 
						|
    const configPublicPath = strapi.config.get(
 | 
						|
      'middleware.settings.public.path',
 | 
						|
      strapi.config.paths.static
 | 
						|
    );
 | 
						|
 | 
						|
    const uploadDir = path.resolve(strapi.dir, configPublicPath);
 | 
						|
 | 
						|
    return {
 | 
						|
      upload(file) {
 | 
						|
        verifySize(file);
 | 
						|
 | 
						|
        return new Promise((resolve, reject) => {
 | 
						|
          // write file in public/assets folder
 | 
						|
          fs.writeFile(
 | 
						|
            path.join(uploadDir, `/uploads/${file.hash}${file.ext}`),
 | 
						|
            file.buffer,
 | 
						|
            err => {
 | 
						|
              if (err) {
 | 
						|
                return reject(err);
 | 
						|
              }
 | 
						|
 | 
						|
              file.url = `/uploads/${file.hash}${file.ext}`;
 | 
						|
 | 
						|
              resolve();
 | 
						|
            }
 | 
						|
          );
 | 
						|
        });
 | 
						|
      },
 | 
						|
      delete(file) {
 | 
						|
        return new Promise((resolve, reject) => {
 | 
						|
          const filePath = path.join(uploadDir, `/uploads/${file.hash}${file.ext}`);
 | 
						|
 | 
						|
          if (!fs.existsSync(filePath)) {
 | 
						|
            return resolve("File doesn't exist");
 | 
						|
          }
 | 
						|
 | 
						|
          // remove file from public/assets folder
 | 
						|
          fs.unlink(filePath, err => {
 | 
						|
            if (err) {
 | 
						|
              return reject(err);
 | 
						|
            }
 | 
						|
 | 
						|
            resolve();
 | 
						|
          });
 | 
						|
        });
 | 
						|
      },
 | 
						|
    };
 | 
						|
  },
 | 
						|
};
 |