Ich benutze Ruby 2.4 und Rails 5. Ich habe Dateiinhalt in einer Variable namens "Inhalt". Der Inhalt könnte Daten aus Dingen wie einer PDF-Datei, einer Word-Datei oder einer HTML-Datei enthalten. Gibt es eine Möglichkeit zu sagen, ob die Variable Binärdaten enthält? Letztendlich würde ich gerne wissen, ob dies eine PDF, Microsoft Office oder eine andere Art von OpenOffice-Datei ist. Diese Antwort - Rails: possible to check if a string is binary? - legt nahe, dass ich die Codierung des Gibt es eine Möglichkeit zu überprüfen, ob eine Ruby-Variable Binärdaten enthält?
content.encoding
Variable überprüfen und es würde
ASCII-8BIT
im Fall von binären Daten erzeugen, aber ich habe bemerkt, es gibt Fälle, in denen der in der Variablen gespeicherte HTML-Inhalt auch "ASCII-8BIT" als content.encoding zurückgeben könnte, ist die Verwendung von "content.encoding" keine sichere Methode, um mir mitzuteilen, ob ich binäre Daten habe. Gibt es einen solchen Weg und wenn ja, was ist das?
Angesichts Ihrer Anforderungen, Es scheint wie du wirst h um eine Analyse des Inhalts zu machen. Ich würde die oberen n Bytes ziehen und sie gegen Ihre Standard-ASCII-Codes überprüfen. Wenn viele der gefundenen Zeichen nicht ASCII sind, ist es wahrscheinlich, dass Ihr Inhalt binär ist. Scheint so, als ob ein Chi-Quadrat-Test gut passen könnte. Warum können Sie nicht auf das eigentliche Dateiobjekt zugreifen? – Brennan
Ich greife auf den Inhalt von einer Datenbank zu, in der keine zusätzlichen Informationen über die Datei vorhanden sind. Manchmal gibt es einen Dateinamen, aber Erweiterungen sind unzuverlässig, um den Datei-/Inhaltstyp zu bestimmen. – Dave
Warte, der Inhalt der Datei ist in der DB? – Brennan