Ich musste auch irgendwie eine hochgeladene Datei löschen. Wir haben die Bereinigungsaufgabe nicht aktiviert, da einige Dateien aus einem Import von einer anderen Forensoftware stammen und noch nicht korrekt in importierten Beiträgen referenziert wurden. Daher musste ich einen manuellen Weg finden. Das Folgende funktioniert, ist aber nicht schön …
-
Stellen Sie sicher, dass der relevante Upload nicht mehr in der aktuellen Version eines Beitrags vorhanden ist. Auf diese Weise betrachtet Discourse ihn als verwaist und macht keine Probleme, wenn Sie ihn löschen.
-
Verwenden Sie das Data Explorer Plugin oder eine andere Methode, um die Discourse-Datenbank abzufragen, um verwaiste Uploads aufzulisten, den relevanten zu finden und seine upload_id und seinen Dateinamen zu notieren. Relevante Abfrage:
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 -
Löschen Sie in der Datenbank oder mit der Rails-Konsole für Discourse den betroffenen Datensatz aus der Tabelle
uploadsanhand seiner Upload-ID. Hier verwende ich die Rails-Konsole:Upload.where(id: 16384).first.delete -
Löschen Sie die zugehörige Datei inkl. aller optimierten Versionen (falls vorhanden, gilt für Bilder) vom Dateisystem über SSH. Beachten Sie das Wildcard-Zeichen vor der Dateiendung, um auch optimierte Versionen zu erfassen, die hier ein Suffix haben. Natürlich,
cd /path/to/discourse/shared/public/ find . -name 43adade7a4cc64426adb8232a56cb2c3b49fb7c9*.pdf -type f -delete