アップロードされたファイルを削除するには?

That is correct.

Can’t tell since you ninja edited your post which did not create a new revision. The first version of this post only has “edited.png”.

Which makes me think that you linked the image and did not upload it.

Yes, because you edited your post too quickly. We have a grace period window of 300 seconds here in which if you make an edit, it won’t create a new version of the post.

If you look at the raw, you see that the images are merely links to dropbox

Those were not uploaded. Just linked.

「いいね!」 3

Thank you.

The underlying links have long been deleted - Shouldn’t that mean these .gif should seize appearing? Clicking “View Image” from the context menu takes me to a community.signalusers address, is that expected behavior?

Testing, I’ll edit this out in ~300 seconds and shortly after delete the link.

deleted.png


Edit#2

The link is deleted but the image persists in the edit history, perhaps it doesn’t have an Upload record as it isn’t removed by the automatic cleanup.

It’s hosted at https://d11a6trkgmumsb.cloudfront.net/original/3X/1/0/101f03af29f12ea30e1226eb96a02c3ed2f6d2ef.png. Not dropbox.

「いいね!」 1

I suppose, looking about, that it is held locally is expected behavior when download_remote_images_to_local is enabled. I think that’s the relevant setting.

So this

isn’t functioning for this type of upload, as demonstrated in my previous post. Correct me if I’m wrong.

「いいね!」 1

The upload will be deleted if the site setting clean up uploads is enabled, after clean orphan uploads grace period hours.

「いいね!」 5

Thanks for the quick response!

clean up uploads sounds like a general setting that would capture all images with an upload record, is that correct? Not just those present due to download_remote_images_to_local. If true, I should be able to find examples on the site of regular image uploads that aren’t being removed as a result of the automatic cleanup.

You mind me asking what the clean orphan uploads grace period hours is set to here so I can offer it as a solution. Or does it come with a default?

If they decide to enable that setting, will they need to do anything to apply it to past posts?


Edit
Just for the sake of being explicit, the thinking here is that this isn’t an issue but that a setting needs to be switched on. I just don’t want to go back and say “You need to enable this!” and they say “It is enabled!” I’ll look silly.

「いいね!」 1

I also caught myself frantically looking for a place to browse uploads (familiar with it from MediaWiki) because I just know stuff gets double triple and quadruple uploaded, and sometimes I wonder where a file was that I uploaded once a while ago but maybe lost or deleted so I can link to it instead of re-uploading it yet again… I guess there is something to be said about a file browser… :slight_smile:

「いいね!」 1

アップロードされたファイルをどうにかして削除する必要もありました。一部のファイルは別のフォーラムソフトウェアからのインポートによるもので、インポートされた投稿でまだ正しく参照されていないため、クリーンアップタスクは有効にしていません。そのため、手動で削除する方法を見つける必要がありました。以下は、見た目は良くありませんが機能する方法です…

  1. 関連するアップロードが、現在の投稿のバージョンに存在しないことを確認します。これにより、Discourse はそれを孤立したファイルとみなし、削除時に問題を起こしません。

  2. Data Explorer プラグイン または別の方法を使用して Discourse データベースをクエリし、孤立したアップロードを一覧表示し、関連するものを特定して、その upload_idfilename をメモします。関連するクエリは次のとおりです。

    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. データベースまたは Rails console for Discourse を使用して、uploads テーブルから該当するレコードをその upload ID で削除します。ここでは Rails console を使用します。

    Upload.where(id: 16384).first.delete
    
  4. 関連するファイル(最適化されたバージョンがあればそれらすべて、画像に適用されます)を SSH 経由でファイルシステムから削除します。ファイル拡張子の前にワイルドカードを追加して、ここにサフィックスが付く最適化されたバージョンもキャッチできるように注意してください。もちろん、

    cd /path/to/discourse/shared/public/
    find . -name 43adade7a4cc64426adb8232a56cb2c3b49fb7c9*.pdf -type f -delete
    
「いいね!」 1

へえ!この投稿で参照されている画像は、これらの設定ではキャプチャされていないようです。

なぜ削除されなかったのでしょうか?

また、DropboxリンクのようなリンクされたファイルをDiscourseが「アップロード」するのはなぜでしょうか?特定のファイルをリンクする目的は、多くの場合、コンテンツの管理を維持することです。

post_uploads を upload_references にリネームしたことにより、ステップ 2 に記載されている SQL クエリは無効になりました。更新されたコードは次のとおりです。

SELECT 
  uploads.id, uploads.user_id, uploads.created_at, 
  uploads.url, uploads.filesize
FROM uploads
  LEFT OUTER JOIN upload_references ON uploads.id = upload_references.upload_id
WHERE upload_references.target_id IS NULL
ORDER BY created_at DESC
LIMIT 100