Ich versuche, den folgenden Code zu Base64 zu verwenden, um ein Bild zu kodieren und es dann per E-Mail-Dienst eines Drittanbieters per E-Mail zu versenden.Warum ist das Image beschädigt, wenn es in base64 konvertiert wird?
(ns application.encode
(:import org.apache.commons.codec.binary.Base64)
(:require [clojure.java.io :as io]))
(defn encode [file-path]
(let [content (String.
(Base64/encodeBase64
(.getBytes
(slurp (clojure.java.io/resource "public/test.gif")))))]
;; email file contents
)
Das Bild wird jedoch beschädigt und seine Größe wird verdoppelt. Ich kann dies überprüfen, indem ich es per E-Mail oder spit
an eine lokale Datei sende.
Was mache ich falsch?
UPDATE: Falls es nützlich ist, macht der folgende Ruby-Code, was ich oben versuchen will und schreibe seine Ausgabe in eine Datei, dann erlaubt es mir, die E-Mail wie gewünscht zu senden. (Dies ist keine Lösung, natürlich, aber ich wollte sicher sein, was ich versuche sogar möglich zu tun war die fragliche Datei verwendet wird.)
encoded = Base64.encode64(File.read('resources/public/test.gif'))
Mein Missbrauch von 'slurp' war in der Tat die Ursache für mein Problem
Ein schönes Beispiel kann in dem Clojure-Kochbuch zu finden. Anhand der Informationen aus der Antwort, die Sie verlinkt haben, konnte ich eine funktionierende Lösung finden. Vielen Dank! – pdoherty926