Wie Blob dienen und einen guten Dateinamen für alle Benutzer haben?

8

Ich habe eine PDF-Datei als Blob-Objekt. Ich möchte meinen Benutzern dienen, und gerade mache ich:

%Vor%

Das funktioniert gut für Leute, die ihr In-Browser-PDF-Tool verwenden möchten.

Aber ... einige Leute haben ihren Browser so eingestellt, dass PDFs automatisch heruntergeladen werden. Für diese Personen ist der Name der heruntergeladenen Datei eine zufällige Zeichenfolge, die auf der Blob-URL basiert. Das ist eine schlechte Erfahrung für sie.

Ich weiß, ich kann auch tun:

%Vor%

Aber das ist eine schlechte Erfahrung für Leute, die PDF-Reader im Browser verwenden wollen, da sie gezwungen sind, die Datei herunterzuladen.

Gibt es einen Weg, um jedem gute Dateinamen zu geben und jedem zu erlauben, das PDF so zu lesen, wie es will (in seinem Browser oder in seinem OS-Reader)?

Danke

    
mlissner 11.11.2017, 23:07
quelle

3 Antworten

3

Wenn Google Chrome den PDF Viewer (mit der Option "PDF-Dateien herunterladen, statt sie automatisch in Chrome zu öffnen") deaktiviert, wird zumindest in Google Chrome angezeigt, dass window.navigator.plugins weder "Chromium PDF Plugin" noch "Chromium PDF" anzeigt Zuschauer". Wenn die Option auf der Standardeinstellung belassen wird, wird der Viewer in der Plugin-Liste angezeigt.

Mit dieser Methode kann window.navigator.plugins verwendet werden, um zu prüfen, ob eines der Elemente name s eines der oben genannten Plugins ist. Abhängig von diesem Ergebnis wird dann entweder <iframe> oder <a href="blobUrl" download="file.pdf"> angezeigt. Für andere Browser stelle ich mir vor, dass verschiedene Methoden verwendet werden müssten. Sie können auch nach einem "Acrobat Reader" -Plugin suchen, das auf einigen Maschinen vorhanden ist, oder auch nur nach dem Wort "PDF".

Nebenbei bemerkt sieht es so aus, als ob es möglich ist zu erkennen, ob der standardmäßige Firefox PDF-Viewer aktiviert ist, indem Ссылка .

    
Greenbeard 18.11.2017, 10:36
quelle
1

Versuchen Sie, & amp; filename = thename.pdf an den Binär-, Metadaten- oder http-Header anzuhängen:

Inhalts-Disposition: Anhang; Dateiname="thename.pdf"

    
user5886944 24.11.2017 22:18
quelle
0

Ich habe die Dokumentation von createObjectURL (blob) durchgesehen, es wird immer ein eindeutiges und spezifisches Format der URL zurückgeben. Es ist nicht möglich, die URL hier zu ändern.

Die Plugin-Sache ist nicht in allen Browsern konsistent.

Hier ist meine radikale Idee

  1. Suchen oder erstellen Sie (falls nicht verfügbar) eine js-Bibliothek, die PDF-Dateien vom Blob zum Server erstellen und speichern kann. (Ich schaute durch einige von ihnen wie 'jsPDF', 'pdfkit', aber keiner von ihnen verwendet Blob)

  2. Speichern Sie die Datei unter einem gültigen Namen auf dem Server

  3. verwende den obigen Namen im iframe.

priyadarshi swain 24.11.2017 23:05
quelle

Tags und Links