diff --git a/src/monger/gridfs.clj b/src/monger/gridfs.clj index bfb1d73..e097d82 100644 --- a/src/monger/gridfs.clj +++ b/src/monger/gridfs.clj @@ -5,7 +5,7 @@ (:use [monger.conversion]) (:import [com.mongodb DBObject] [com.mongodb.gridfs GridFS GridFSInputFile] - [java.io InputStream])) + [java.io InputStream File])) ;; ;; Implementation @@ -56,6 +56,10 @@ (extend-protocol GridFSInputFileFactory String (make-input-file [^String input] + (.createFile ^GridFS monger.core/*mongodb-gridfs* ^InputStream (io/make-input-stream input { :encoding "UTF-8" }))) + + File + (make-input-file [^File input] (.createFile ^GridFS monger.core/*mongodb-gridfs* ^InputStream (io/make-input-stream input { :encoding "UTF-8" })))) diff --git a/test/monger/test/gridfs.clj b/test/monger/test/gridfs.clj index 668ab33..37f023d 100644 --- a/test/monger/test/gridfs.clj +++ b/test/monger/test/gridfs.clj @@ -33,10 +33,18 @@ (is (= 1 (count (gridfs/all-files)))))) +(deftest test-storing-files-to-gridfs-using-file-instances + (let [input (io/as-file "./test/resources/mongo/js/mapfun1.js")] + (is (= 0 (count (gridfs/all-files)))) + (gridfs/store (gridfs/make-input-file input) + (.setFilename "monger.test.gridfs.file2") + (.setContentType "application/octet-stream")) + (is (= 1 (count (gridfs/all-files)))))) + (deftest test-storing-bytes-to-gridfs (let [input (.getBytes "A string")] (is (= 0 (count (gridfs/all-files)))) (store (make-input-file input) - (.setFilename "monger.test.gridfs.file2") + (.setFilename "monger.test.gridfs.file3") (.setContentType "application/octet-stream")) (is (= 1 (count (gridfs/all-files))))))