List of all uploaded files

Hello friends,

what are you thinking about some extra tab at the admin interface to keep control over the current disk usage, files sizes, click rates, filtering them after extension and searching for specific terms?

I wish, I could get more control over all attachments.

Best

7 лайков

That’s something I definitely want done. Not sure when though.

11 лайков

Sounds useful!

There is a bunch of product questions around how this could/should work in my mind. It looks like a problem that has been already figured out or solved in other forum software, but I wonder how will this be framed / built around Discourse’s philosophy.

I am also wondering more about the manifestations of providing uploads settings, e.g.: if you chose to introduce extension configuration, the composer needs to cater for this when users are selecting/uploading attachments, and so on. Also, whether this should be in core, or as a plugin.

On the bright side, if we ignore all questions / assumptions / product / design considerations, it doesn’t look like it is technically tricky, I made a one hour spike here (this is very immature implementation though :blush:).

You can definitely extend this with a bunch of useful features: settings, search / filtering, sorting, etc (and some other considerations like supporting pagination, …)

6 лайков

If youbtalking about admin tools. You can considure usong plugin data explorer whic allows admins to query database. When I hunting free space I am querying db there is table uploads whic gives you size location and other useful things. Also one good thing is that deleating rows from uploads also dealeting files. Becouse ther is sidekiq job pruge oprhan uploads.

I am totally open to adding something here, but I feel a top level tab is a bit too much .

Conceptually this feels like a “report” to me with a drilldown vs a section for uploading things.

I would like to see this link to the new report

When I think about this problem I think the main use case is around admins trying to get a handle on the … upload problem…

  • Why do I have so many uploads?

  • Which users have the most/largest uploads ?

  • What are the 100 biggest uploads on my forum?

  • How many things were uploaded in the last month? That way I can keep track of trends.

@codinghorror / @j.jaffeux what are your thoughts here?

12 лайков

Yes I agree it could be a report, we might have to start working on the filtering logic I talked with you months ago. But other than that it should be good.

3 лайка

Great line of questioning @sam !

I think perhaps I lack some context on what is the admin’s job / use case for the upload problem, but it appears to be (if there is any research or perhaps admin opinions to confirm that, it would be great!) that it can be framed as: I am an Admin, I want to gain understanding of my instance’s uploads usage.

I wonder if there are any after actions when the job / use case is satisfied. For example, if the admin notices a problem or a trend, will the admin/site_settings/category/files is the place they can optimise their file uploading strategy?

Also, I agree that the Uploads section is heavy as a top level tab for this use case.

Есть ли какие-то новости по этой теме?

Я ищу вариант для просмотра загруженных файлов.

3 лайка

Кажется, сортировка и перечисление файлов для Discourse не так важны, как для нас. :see_no_evil:

Аналогичная проблема:

Вот несколько запросов для Data Explorer для получения сведений о загрузке постов. Возможно, что-то подобное можно добавить в раздел отчетов администратора для сайтов, где не установлен плагин Data Explorer. Дайте знать, если эти данные не соответствуют вашим ожиданиям.

Какие пользователи имеют наибольшее количество/объем загрузок?

Возвращает пользователя, количество его загрузок и общий объем загрузок в КБ, округленный до двух знаков после запятой. Соединение с таблицей users необходимо, чтобы исключить данные удаленных пользователей. Результаты отсортированы по общему объему загрузок в порядке убывания.

Включая оптимизированные изображения

WITH uploads_with_optimized AS (
SELECT
ul.user_id,
ROUND((SUM(COALESCE(oi.filesize, 0)) + SUM(ul.filesize)) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
LEFT JOIN optimized_images oi
ON ul.id = oi.upload_id
GROUP BY ul.user_id
)

SELECT
uwo.user_id,
COUNT(uploads.user_id) AS upload_count,
total_kb
FROM uploads_with_optimized uwo
JOIN uploads
ON uploads.user_id = uwo.user_id
GROUP BY uploads.user_id, uwo.user_id, total_kb
ORDER BY total_kb DESC
LIMIT 50

Исключая оптимизированные изображения

SELECT
ul.user_id,
COUNT(ul.user_id) AS upload_count,
ROUND(SUM(ul.filesize) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
GROUP BY ul.user_id
ORDER BY total_kb DESC
LIMIT 50

Какие 100 самых больших загрузок на моем форуме?

Возвращает пользователя, пост с загрузкой и размер файла загрузки в КБ. Результаты отсортированы по размеру загрузки в порядке убывания.

Включая оптимизированные изображения

SELECT
ul.user_id,
pul.post_id,
ROUND((SUM(oi.filesize) + ul.filesize) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
JOIN optimized_images oi
ON ul.id = oi.upload_id
GROUP BY oi.upload_id, ul.user_id, pul.post_id, ul.filesize
ORDER BY total_kb DESC
LIMIT 100

Исключая оптимизированные изображения

SELECT
ul.user_id,
pul.post_id,
ROUND(ul.filesize / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
ORDER BY total_kb DESC
LIMIT 100

Загрузки за последние 30 дней

Запрос требует указания параметра :end_date. Дата должна быть в формате ‘yyyy-mm-dd’. Например, ‘2020-01-08’. Он возвращает результаты за 30-дневный период, который заканчивается датой end_date. Возвращаются день, количество загрузок и общий объем загрузок за день в КБ для всех дней в периоде, в которые были загрузки постов. Результаты отсортированы по дате.

Включая оптимизированные изображения

--[params]
-- date :end_date

SELECT
ul.created_at::date AS day,
COUNT(1) AS upload_count,
ROUND((SUM(COALESCE(oi.filesize, 0)) + SUM(ul.filesize)) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
LEFT JOIN optimized_images oi
ON ul.id = oi.upload_id
WHERE ul.created_at::date BETWEEN :end_date::date - INTERVAL '30 days' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC

Исключая оптимизированные изображения

--[params]
-- date :end_date

SELECT
ul.created_at::date AS day,
COUNT(1) AS upload_count,
ROUND(SUM(ul.filesize) / 1000.0, 2) AS daily_upload_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
WHERE ul.created_at::date BETWEEN :end_date::date - INTERVAL '30 days' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC

11 лайков

Я новый участник (мета-)сообщества и недавно взял на себя обязанности администратора другого сообщества на платформе Discourse (размещённого на хостинге Discourse). На панели управления я только что заметил «скачок» в объёме хранилища, занимаемого загруженными файлами (с примерно 0,7 ГБ до 1,2 ГБ). Похоже, что Data Explorer доступен только для тарифных планов Business и выше… Есть ли какой-либо другой способ узнать, какие именно недавние файлы занимают дополнительные 0,5 ГБ?

2 лайка

Это полностью моя вина.

Раньше у нас была серьёзная ошибка, из-за которой мы некорректно подсчитывали размер всех загрузок.

Когда пользователь загружает изображение, мы часто изменяем его размер 3–4 раза для различных разрешений и оптимизации. Эти оптимизированные изображения хранятся в облаке и всё ещё занимают место на диске.

Чтобы увидеть фактические изображения, выполните:

SELECT * FROM optimized_images

@simon, возможно, стоит обновить запрос выше, чтобы учесть таблицу optimized_images?

5 лайков

Ах, это очень логично. Я на мгновение даже подумал, что дело может быть именно в этом — уже после того, как написал этот пост здесь :wink:

Хм, возможно, стоит добавить короткое примечание об этом прямо на индикаторе использования хранилища на панели управления, чтобы пользователи не думали, что кто-то крадёт их место неведомыми данными :wink:

И если вы когда-нибудь создадите «Инспектор загрузок», который не требует плагинов тарифа Business, это было бы очень ценно!!

Спасибо!

4 лайка

Наконец, я не понял, как можно увидеть список загрузок участников по разным темам и сообщениям!!??

1 лайк

Я хотел бы просмотреть каталог загруженных файлов. Мой конкретный случай использования — изучить детали этой ссылки, которая больше не работает:

Любая помощь от администратора в этом вопросе была бы очень кстати. Или я что-то упустил?

С наилучшими пожеланиями,
R

1 лайк

Другой способ обхода заключается в следующем:

  • создать и загрузить резервную копию сайта с опцией «включить загрузки»
  • перейти к этому архиву и распаковать его, например, из командной строки: $ tar -xvzf xxxx.tar.gz
  • перейти в каталог загрузок: $ cd uploads
  • выбрать между оригинальными и оптимизированными секциями и изучить полученную структуру файлов
  • имена загруженных файлов отсутствуют, все имена представляют собой случайные (или закодированные) строки

Графический интерфейс в панели администратора обеспечил бы более удобный пользовательский опыт. Поэтому я голосую за добавление этой функции. R

1 лайк