2
我正在嘗試使用Racket的文件上傳小工具(http://docs.racket-lang.org/web-server/formlets.html)將文件上傳到Web服務器。麻煩的是,formlet-process只是返回文件的名稱而不是其內容。在球拍中,你如何允許文件上傳到網絡服務器?
這是我到目前爲止有:
#lang web-server/insta
(require web-server/formlets
web-server/http
xml)
; start: request -> doesn't return
(define (start request)
(show-page request))
; show-page: request -> doesn't return
(define (show-page request)
; Response generator
(define (response-generator embed/url)
(response/xexpr
`(html
(head (title "File upload example"))
(body (h1 "File upload example"))
(form
([action ,(embed/url upload-handler)])
,@(formlet-display file-upload-formlet)
(input ([type "submit"] [value "Upload"]))))))
(define (upload-handler request)
(define a-file (formlet-process file-upload-formlet request))
(display a-file)
(response/xexpr
`(html
(head (title "File Uploaded"))
(body (h1 "File uploaded")
(p "Some text here to say file has been uploaded")))))
(send/suspend/dispatch response-generator))
; file-upload-formlet: formlet (binding?)
(define file-upload-formlet
(formlet
(div ,{(required (file-upload)) . => . a-file})
a-file))
在這種情況下,a-file
被設置爲一個字節串與文件的名稱,而不是文件的內容。如何獲取文件的內容以便我可以將其寫入服務器上的文件?
在此先感謝您的幫助!