;; hi guys ;; I looked at the multipart-form-data egg ;; and had a couple of hickups getting started, ;; so I though I'd put together a slightly more ;; sophisticated example: (use spiffy intarweb uri-common multipart-form-data) (create-directory "./uploads" #t) (change-directory "./uploads") (define (app c) ;; saves any MULTIPART files in form-data to disk. returns list of ;; filenames. (define (save-files form-data) (filter-map (lambda (pair) (let ((value (cdr pair))) ;; car is form-data key, can be ignored (and (multipart-file? value) (with-output-to-file (multipart-file-filename value) (lambda () (display (read-string #f (multipart-file-port value))))) (multipart-file-filename value)))) form-data)) (define form-data (and (eq? 'POST (request-method (current-request))) (read-multipart-form-data (current-request)))) (define filenames (if form-data (save-files form-data) '())) (send-response body: (conc "
Uploads go here: " (current-directory) "/upload
You uploaded:
"))) (define thread (thread-start! (lambda () (vhost-map `((".*" . ,(lambda (c) (app c))))) (root-path "./") (start-server))))