Das habe ich versucht, cors origins auf https://xxxxx.s3.us-east-2.amazonaws.com gesetzt
und DISCOURSE_ENABLE_CORS: true in /var/discourse/containers/app.yml gesetzt
aber es funktioniert nicht.
Und hast du ./launcher rebuild app ausgeführt, nachdem du Änderungen an app.yml vorgenommen hast? Möglicherweise musst du auch einen Hard Refresh im Browser durchführen.
Nebenbei bemerkt, könnten Sie den Abschnitt „Dateien“ der Admin-Einstellungen überprüfen, um zu sehen, ob Sie Einstellungen geändert haben, die diese Funktion beeinträchtigen. Ich glaube auch nicht, dass diese Funktion funktionieren kann, wenn Sie auf eine PDF-Datei verlinken, die auf einem anderen Server gehostet wird. Ich habe dies gerade auf meiner Website getestet und dieselbe remote gehostete PDF-Datei zeigte keine Vorschau.
Lassen Sie uns wissen, wenn Sie die Ursache des Problems finden!
Beispiel-Markdown eines Beitrags, bei dem remote nicht funktionierte, aber lokal hochgeladen funktionierte.
remote:
[test remote pdf](https://jsoncompare.org/LearningContainer/SampleFiles/PDF/sample-pdf-with-images.pdf)
uploaded locally:
[sample-pdf-with-images.pdf|attachment](upload://uOJLgHidEXnbqPRn2p6yP10ecQU.pdf) (3,8 MB)
So sieht es aus:
Ja. Aber es hat nicht funktioniert.
Wenn du S3 in Discourse aktivierst
Dann werden die Dateien per Definition auf einer anderen Domain gespeichert.
Ich denke, das klärt das Problem. Aber ich hoffe immer noch, dass das Plugin so angepasst werden kann, dass es Discourse-Installationen unterstützt, bei denen S3 aktiviert ist.
Ich bin mit dieser Konfiguration nicht so vertraut. Haben Sie diese Anweisungen befolgt?
Ja, ich habe S3 (und die zugehörige Einstellung „sichere Medien“) seit einigen Jahren problemlos am Laufen.
Nur die Inline-PDF-Komponente funktioniert mit dieser Einstellung nicht.
Zur Referenz, selbst wenn app.yml so eingestellt ist:
DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: ‘*’
hilft nicht.
Ich bin auf genau dasselbe Problem gestoßen und habe meine S3-Uploads rückgängig gemacht, nur um diesen TC zum Laufen zu bringen, da er für uns von hohem Wert ist:
Ich denke wirklich, da dies #offiziell ist und S3-Uploads gefördert werden, sollte dies untersucht werden, um zu sehen, ob es irgendwie mit S3 funktionieren kann. Es könnte sein, dass PDFs speziell von S3-Uploads ausgeschlossen sind, aber das wäre schlecht, da einige riesig sind!
Ich glaube nicht, dass jemand widersprechen würde.
Ich vermute, es geht um Bewusstsein und Prioritäten.
Zumindest was das „Bewusstsein“ angeht, könnte @Johani, der OP, vielleicht eine kleine Notiz im Thema dieser Diskussion hinzufügen, dass die Inline-PDF-Komponente nicht mit aktiviertem S3 funktioniert.
Es würde anderen Zeit für die Fehlerbehebung ersparen und das Bewusstsein für das Problem schärfen.
Es gibt ein paar Informationen zu S3 in diesen Beiträgen, die ich aus dem Auto-Timer gefischt habe, falls sie hilfreich sind?
Ein Beitrag wurde in ein bestehendes Thema zusammengeführt: Theme-Component Topics project
Ja, das funktioniert ![]()
Zur Referenz, falls jemand anderes dies benötigt:
-
Gehen Sie zur AWS-Konsole-Buckets
https://s3.console.aws.amazon.com/s3/bucketsund wählen Sie den Bucket aus, der für Ihre Discourse-Installation verwendet wurde -
Wählen Sie die Registerkarte Berechtigungen

-
Scrollen Sie nach unten zu “Cross-origin resource sharing (CORS)” und fügen Sie Folgendes ein:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"https://my-site.com"
],
"ExposeHeaders": []
}
]
Sollte so aussehen:
Ich wünschte, ich hätte das gefunden, als ich noch bei S3-Uploads war!!
Muss es jetzt vielleicht noch einmal überarbeiten. @JammyDodger, ich frage mich, ob diese Dinge sowohl bei S3 als auch in dieser OP vermerkt werden sollten, damit andere nicht darüber stolpern.
Absolut.
Ich habe nur auf eine Bestätigung gewartet, dass es funktioniert, bevor ich darüber nachgedacht habe, wie ich es am besten bearbeiten kann. ![]()
Zwei Ideen, die dasselbe Problem angehen: Der Viewport von Discourse ist ziemlich schmal, sodass die meisten PDFs zu klein sind, um sie inline zu lesen. Um dies zu beheben, könnten wir
a) den PDF-iframe vergrößerbar machen? Ich habe dies bereits mit CSS versucht, aber ohne Erfolg – das zugrunde liegende Raster scheint im Weg zu sein
b) neben dem Download-Link einen zweiten Link „In neuem Tab öffnen“ anbieten? Ich bin sehr daran interessiert, nicht zu viele Dinge aus unserem Forum herunterzuladen.
[Zitat=“Ralf Stockmann, Beitrag:111, Thema:157649, Benutzername:Ralf_Stockmann”]
b) einen zweiten Link “In neuem Tab öffnen” neben dem Download-Link anbieten? Ich möchte möglichst wenig Zeug aus unserem Forum herunterladen.
[/Zitat]
Das wäre eine deutliche Verbesserung! Und sollte meiner Meinung nach nicht allzu schwer hinzuzufügen sein. Vielleicht versuche ich mich in den nächsten Tagen an einem PR (Pull Request), wenn ich Zeit dafür finde.
Ich denke, (b) ist bereits als Option vorgesehen, z. B. Inline oder in neuem Tab öffnen. Vielleicht eine dritte Option, damit Benutzer Inline und in neuem Tab öffnen können? Diese Idee gefällt mir auch.
(a) könnte schwierig sein, da es schwierig sein kann, Dinge in einem Beitrag richtig aussehen zu lassen.
Ich würde mich über eine Schaltfläche zum Erweitern
in der Symbolleiste freuen, die das PDF im Vollbildmodus anzeigt und nicht inline.@Ralf_Stockmann und @Alon1 habt ihr schon versucht…
Außerdem verwende ich auf meinem Discourse diese Methode…
PDF von Google Drive einbetten
(Dies ist meine bevorzugte Methode, damit PDFs in iFrames responsiv sind - andere Methoden scheitern meist daran, browserübergreifend responsiv zu sein.)
- Teilen
- Freigabelink kopieren
- Freigabelink in einem neuen Tab öffnen
- Klicken Sie auf die 3 vertikalen Punkte in der oberen rechten Ecke
- Einbetten auswählen
- Den angezeigten iFrame-Code kopieren
- In den Discourse-Editor einfügen
Ein Test-PDF auf Google Drive ist hier unten eingebettet, das Sie \u003c\u003c hier herunterladen \u003e\u003e können
<iframe src="https://drive.google.com/file/d/1KQ-jn7R0NmZxw955QaPu3lvLFh5zpnDe/preview" width="640" height="480" allow="autoplay"></iframe>
So sieht das aus… (was Sie auch live HIER auf meiner Seite ausprobieren können)
Das ist großartig! \nEinfach (1) die IFrame Lightboxes Theme-Komponente installieren und (2) meine eigene Website-URL zur Liste der „iframe origin domains“ in den Komponenteneinstellungen hinzufügen, funktioniert! Sie fügt den Erweiterungsbutton direkt über der rechten Ecke des Inline-PDFs hinzu \n
\n\n\nSofort einsatzbereitDa ich PDFs immer noch nicht in einem neuen Tab öffnen konnte, habe ich ein kleines Plugin geschrieben, das alle lokalen PDFs mit content-disposition: inline bereitstellt:




