Удалить изображение из локального хранилища после загрузки в Amazon S3 - PullRequest
0 голосов
/ 15 апреля 2019

Я использую TinyPNG для сжатия изображений, загруженных в мою форму, и затем сохраняю их в облачном хранилище Amazon s3. Я сохранил папку uploads, в которой я хочу, чтобы изображение было временно сохранено и удалено после того, как сжатие выполнено и сохранено в моем онлайн-хранилище.

index.js

const storage = multer.diskStorage({
    destination: function(req, file, cb){
        cb(null, './uploads');
    },
    filename: function(req, file, cb){
        cb(null, new Date().toISOString().replace(/:/g, '-') + file.originalname);
    }
});

const fileFilter = (req, file, cb)=>{
    if(file.mimetype.match(/jpeg|jpe|png|jpg$i/)){
        cb(null, true);
    }else {
        cb(new Error("Only JPG and PNG files allowed"), false);
    }
};

const tinify = require("tinify");
tinify.key = "abc";

const upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 * 14
    },
    fileFilter: fileFilter
});

let cpUpload = upload.fields(
    [
        { name: 'img1', maxCount: 1 },
        { name: 'img2', maxCount: 1 }
    ]
);

router.post('/uploadForm', cpUpload, function(req, res, next) {
    const source = tinify.fromFile(req.files['img'][0].path);
    source.store({
        service: "s3",
        aws_access_key_id: "xyz",
        aws_secret_access_key: "abc",
        region: "us-west-1",
        headers: {
            'Cache-Control': "public, max-age=31536000"
        },
        path: "testbucket/"+req.files['img'][0].filename
    });
    let path = req.files['img'][0].path;
    fs.unlink(path, (err)=>{
        if(err) throw err;
        console.log('successfully deleted file');
    });
}

Файл, однако, удаляется в папке uploads, прежде чем будет выполнено сжатие. Как мне это преодолеть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...