首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件保存到服务器中?

如何将文件保存到服务器中?
EN

Stack Overflow用户
提问于 2021-01-25 14:21:56
回答 1查看 70关注 0票数 1

我在服务器中收到以下请求,我正在使用该请求(->请求:params)进行提取:

代码语言:javascript
复制
{"_parts":[["video",{"_data":{"size":2971246,"blobId":"D002459C-47C5-4403-ABC6-A2DE6A46230A","offset":0,"type":"video/quicktime","name":"DCDE604A-954F-4B49-A1F9-1BCC2C2F37BC.mov","__collector":null}}],["key","VAL"]]}

它包含一个带有名称和blobId的文件"video“。但是,我想访问文件的数据并将其保存到文件中。到目前为止,我已经尝试了以下几种方法:

代码语言:javascript
复制
(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)保存到文件(这是一个输入流)中。这肯定是不正确的。通过将数据保存到服务器上的文件中,将服务器收到的这个文件保存到文件中的正确方法是什么?如何从请求中提取这些数据?

EN

回答 1

Stack Overflow用户

发布于 2021-01-25 23:45:31

如果您使用的是Ring,则需要使用wrap-multipart-params中间件。

代码语言:javascript
复制
(ns controller
  (:require [ring.middleware.params :refer [wrap-params]]
            [ring.middleware.multipart-params :refer [wrap-multipart-params]])

(defn upload-shot-video [req]
  (let [uploaded-file (-> req :params "file" :tempfile) ;; here is a  java.io.File instance of your file
    (save-file uploaded-file)
    {:status 201 :body "Upload complete"}))

(def app
  (-> upload-shot-video
      wrap-params
      wrap-multipart-params))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65879854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档