         encoding (or (:encoding options)
                      (req/character-encoding request)
                      "UTF-8")
+        progress (:progress-fn options)
         params   (if (multipart-form? request)
-                   (parse-multipart-params request encoding store)
+                   (parse-multipart-params request encoding store progress)
                    {})]
     (merge-with merge request
                 {:multipart-params params}


(defn- parse-multipart-params
  "Parse a map of multipart parameters from the request."
  [request encoding store]
  (->> (request-context request encoding)
       (file-item-seq)
       (map #(parse-file-item % store encoding))
       (reduce (fn [m [k v]] (assoc-conj m k v)) {})))



  The following options are accepted

  :encoding    - character encoding to use for multipart parsing. If not
                 specified, uses the request character encoding, or \"UTF-8\"
                 if no request character encoding is set.

  :store       - a function that stores a file upload. The function should
                 expect a map with :filename, content-type and :stream keys,
                 and its return value will be used as the value for the
                 parameter in the multipart parameter map. The default storage
                 function is the temp-file-store.

  :progress-fn - a function that gets called during uploads. The function
                 should expect four parameters: request, bytes-read,
                 content-length, and item-count."
  {:arglists '([handler] [handler options])}
  [handler & [options]]
  (fn [request]
