2017-12-23 2 views
2

Ich möchte die Erweiterungen einiger Dateien von ihren Download-Links erhalten.Wie bekomme ich die Dateiendung von ihrem Download-Link von Java?

Download-Links enthalten nicht die Erweiterungen ihrer Dateien. Zum Beispiel sucht ein Link wie unten:

http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDNfNYI4FFesWV5zeSPtcfpyHzKZI7dHjkluwtIYNkXOGmjh43Ktdn0VeBWhQ-9l2kheOPt5N2TM3yPEW4tTrtFFqniatwxxhbqsc78IU2pBaqWwyEVLeQx64zSda2CNGmUpSxyte_tamVoIk3y4zXisQ-vjmMp6n1BAB3nbUVlwWg/ 

Ich habe versucht, die Dateien Erweiterung zu bekommen myHttpUrlConnection.getContentType() verwenden, aber das Ergebnis war nicht das Ergebnis, was ich will.

Einige Download-Links geben einen Ausdruck wie “text/plain”, ”application-octet-stream”, , zurück. Aber ich will nur richtige und klare Art, wie rar, mp4, txt, jpeg, mkv, zip, png, apk, mp3, .

Kann mir jeder helfen? Vielen Dank.

Ich entschuldige mich im Voraus, wenn die Grammatik meines Satzes nicht korrekt ist. weil ich nicht gut Englisch kann.

Antwort

3

Sie können das nicht tun. Die Methode getContentType() simpy:

Gibt den Wert des Inhaltstyp-Headerfelds zurück.

die in den meisten Fällen ist (obwohl es keine Garantie dafür gibt) auf die Dateinamenerweiterung/Datei bezogen, zum Beispiel application/pdf würde bedeuten, dass es eine PDF-Datei unter dieser URL ist.

Jeder der Dateitypen mit der Erweiterung, die Sie aufgelistet haben (rar, mp4, txt, jpeg, mkv, zip, png, apk, mp3) haben eine andere Struktur. Um zuverlässig zu machen, was Sie tun möchten, müssen Sie zuerst die gesamte Datei herunterladen und dann deren Typ basierend auf dem Inhalt überprüfen. Ein gutes Beispiel für eine Bibliothek, die Sie verwenden könnten, ist Apache Tika.

+0

danke @syntagma. Kann ich ein paar Bytes (zB 5 Bytes) der Datei herunterladen und dann den Typ überprüfen? oder muss ich die ganze Datei herunterladen? – Hadi

+1

In * einigen * Fällen konnten Sie den Dateityp basierend auf N ersten Bytes erkennen, siehe zum Beispiel Tika's 'MagicDetector': https://tika.apache.org/1.1/detection.html (* Durch die Suche nach speziellen (" magic ") Muster von Bytes in der Nähe des Anfanges der Datei, ist es oft möglich, den Typ der Datei zu erkennen. Für einige Dateitypen ist dies ein einfacher Prozess. Für andere, typischerweise containerbasierte Formate, mag die magische Erkennung nicht genug sein (Mehr Details zum Erkennen von Containerformaten unten) *) – syntagma

+1

@Hadi, das hängt vom Dateityp ab, einige haben Header, um sie zu identifizieren (.class files und .png do), aber selbst mit diesen Headern könnten es tatsächlich nur andere Daten sein das hat zufällig dieses spezifische Bitmuster – phflack

Verwandte Themen