Come eliminare i file caricati?

Ho anche dovuto in qualche modo eliminare un file caricato. Non abbiamo abilitato l’attività di pulizia poiché alcuni file provengono da un’importazione da un diverso software di forum e non sono ancora stati correttamente referenziati nei post importati. Quindi, ho dovuto trovare un modo manuale. Quanto segue funziona ma non è elegante…

  1. Assicurati che il caricamento pertinente non sia più presente nella versione corrente di alcun post. In questo modo, Discourse lo considererà orfano e non creerà problemi quando lo elimini.

  2. Utilizza il plugin Data Explorer o un altro modo per interrogare il database di Discourse per elencare i caricamenti orfani, trovare quello pertinente e annotare il suo upload_id e filename. Query pertinente:

    SELECT 
      uploads.id, uploads.user_id, uploads.created_at, 
      uploads.url, uploads.filesize
    FROM uploads
      LEFT OUTER JOIN post_uploads ON uploads.id = post_uploads.upload_id
    WHERE post_uploads.post_id IS NULL
    ORDER BY created_at DESC
    LIMIT 100
    
  3. Nel database o con la console Rails per Discourse, elimina il record associato dalla tabella uploads tramite il suo ID di caricamento. Qui uso la console Rails:

    Upload.where(id: 16384).first.delete
    
  4. Elimina il file associato incluse tutte le versioni ottimizzate (se presenti, si applica alle immagini) dal file system tramite SSH. Nota il carattere jolly aggiunto prima dell’estensione del file per catturare anche le versioni ottimizzate, che qui hanno un suffisso. Naturalmente,

    cd /path/to/discourse/shared/public/
    find . -name 43adade7a4cc64426adb8232a56cb2c3b49fb7c9*.pdf -type f -delete
    
1 Mi Piace