Принудительная загрузка PDF

Я использую S3 для размещения файлов на своём сообществе Discourse. Я создал iOS-приложение и мне нужно скачивать PDF-файлы, а не открывать их внутри приложения.

Я нашёл решение для ссылки на скачивание:

<a href="download-url?wtn-download-file=true">Скачать файл</a>

Но для PDF, загруженных в S3, я не знаю, что делать.

Редакция: удаляю свой ответ, так как неправильно понял тему :person_facepalming:

Спасибо thoka :+1:

Хм. Похоже, он требует ровно обратного тому, что я просил в своем запросе на новую функцию…

Согласно этому источнику, вы можете добиться желаемого поведения, добавив атрибут download к этим ссылкам через компонент темы.

Мне нужно найти способ изменить все мои ссылки на PDF… их почти 3000

Это должно быть вопросом перенастройки дискурса

Предупреждение: сначала протестируйте это на тестовом сайте. Это может сработать не так, как ожидается.

Привет :wave:

Думаю, эта тема аналогична: Force download pdf on IOS

Для этого нужно использовать api.decorateCookedElement.

Должно работать что-то вроде этого :arrow_down_small:

Разместите это в секции Header как компонент.

<script type="text/discourse-plugin" version="0.8.42">
  api.decorateCookedElement(
    element => {
      const pdfFiles = element.querySelectorAll("a.attachment[href$='.pdf']");

      if (!pdfFiles.length) {
        return;
      }

      pdfFiles.forEach((pdf) => {
        pdf.setAttribute("download", "");
      });
    },
    { id: "download-pdf", onlyStream: true }
  );
</script>

Я протестировал это на своём устройстве, и у меня всё работает. Но если вы захотите использовать другие атрибуты и т. д., вы легко сможете их изменить… Надеюсь, это поможет :slight_smile: