Clojure 如何将文件保存在服务器中?
我正在使用(->req:params)提取的服务器中收到以下请求: 它包含一个带有名称和blobId的文件“video”。但是,我希望访问文件的数据并将其保存到文件中。到目前为止,我已经尝试了以下方法:Clojure 如何将文件保存在服务器中?,clojure,ring,Clojure,Ring,我正在使用(->req:params)提取的服务器中收到以下请求: 它包含一个带有名称和blobId的文件“video”。但是,我希望访问文件的数据并将其保存到文件中。到目前为止,我已经尝试了以下方法: (defn upload-shot-video [req] (prn "uploading video") (prn "video is! " (-> req :multipart-params)) (prn "video is
(defn upload-shot-video [req]
(prn "uploading video")
(prn "video is! " (-> req :multipart-params))
(prn "video is " (-> req :params))
(prn "video before is " (slurp (-> req :body)))
(.reset (-> req :body))
(prn "req full" (-> req))
(prn "video after is " (-> req :body))
(prn "video is! " (-> req :multipart-params))
(clojure.java.io/copy (-> req :body) (clojure.java.io/file "./resources/public/video.mov"))
(let [filename (str (rand-str 100) ".mov")]
(s3/put-object
:bucket-name "humboi-videos"
:key filename
:file "./resources/public/video.mov"
:access-control-list {:grant-permission ["AllUsers" "Read"]})
(db/add-video {:name (-> req :params :name)
:uri (str "https://humboi-videos.s3-us-west-1.amazonaws.com/" filename)}))
(r/response {:res "okay!"}))
我试图将(->req:body)保存到文件中(这是一个inputstream)。这肯定是错误的。通过将数据保存到服务器上的文件中,将服务器接收到的文件保存到文件中的正确方法是什么?如何从请求中提取此数据?如果您使用的是Ring,则需要使用wrap多部分参数中间件
(ns控制器)
(:require[ring.middleware.params:参考[wrap params]]
[ring.middleware.multipart-params:参考[wrap multipart-params]]
(defn上传快照视频[req]
(让[upload file(->req:params“file”:tempfile);;这是您的文件的java.io.file实例
(保存上传的文件)
{:状态201:body“上传完成”})
(def应用程序
(->上传快照视频
包裹参数
包装多部分参数)
(defn upload-shot-video [req]
(prn "uploading video")
(prn "video is! " (-> req :multipart-params))
(prn "video is " (-> req :params))
(prn "video before is " (slurp (-> req :body)))
(.reset (-> req :body))
(prn "req full" (-> req))
(prn "video after is " (-> req :body))
(prn "video is! " (-> req :multipart-params))
(clojure.java.io/copy (-> req :body) (clojure.java.io/file "./resources/public/video.mov"))
(let [filename (str (rand-str 100) ".mov")]
(s3/put-object
:bucket-name "humboi-videos"
:key filename
:file "./resources/public/video.mov"
:access-control-list {:grant-permission ["AllUsers" "Read"]})
(db/add-video {:name (-> req :params :name)
:uri (str "https://humboi-videos.s3-us-west-1.amazonaws.com/" filename)}))
(r/response {:res "okay!"}))