1
votes

Comment supprimer un fichier du dossier de téléchargement dans Strapi?

J'ai une entrée avec un champ de type média.

Lorsque j'essaie de supprimer une entrée, j'utilise le code:

strapi.query('entry').delete({ id: entry.id });
strapi.query('file', 'upload').delete({ id: entry.image.id });

L'entrée est supprimée avec succès, ainsi que l'enregistrement de "Téléchargement de fichiers". Mais le fichier reste toujours dans le dossier upload . Comment puis-je le supprimer?


0 commentaires

3 Réponses :


0
votes

Essayez d'appeler l'organisation strapi. fonctions de votre contrôleur:

delete: async ctx => {
    ctx.body = await strapi.plugins['content-manager'].services['contentmanager'].delete(ctx.params, ctx.request.query);
},

deleteAll: async ctx => {
    ctx.body = await strapi.plugins['content-manager'].services['contentmanager'].deleteMany(ctx.params, ctx.request.query);
}


1 commentaires

Ça ne marche pas pour moi. Une exception est levée: (node: 16792) UnhandledPromiseRejectionWarning: Erreur: vous ne pouvez pas appeler la méthode de requête sans passer le nom du modèle comme premier argument.



0
votes

Essayez ce qui suit, en supposant que votre type de contenu était article:

dans /api/articles/controllers/articles.js

 'use strict';
const { parseMultipartData, sanitizeEntity } = require('strapi-utils');

module.exports = {
  async delete(ctx) {
    const { id } = ctx.params;
    const entity = await strapi.services.articles.delete({ id });

    //with strapi multiple media
    if(entity){
      if (entity.gallery.length > 0) {
        entity.gallery.forEach(image => {
          strapi.plugins.upload.services.upload.remove(image);
        });
      }
    }

    //or with strapi single media
    if(entity){
      strapi.plugins.upload.services.upload.remove(entity.image);
    }

    return sanitizeEntity(entity, { model: strapi.models.articles });
  }
}


0 commentaires

3
votes

Ce code supprime l'entrée de la bibliothèque multimédia et supprime les fichiers du répertoire uploads :

const file = await strapi.plugins['upload'].services.upload.fetch({ id });
await strapi.plugins['upload'].services.upload.remove(file);


0 commentaires