4
我正在使用默認的Yesod腳手架項目。
我創建了一個顯示上傳文件的簡單表單的頁面。
(形式將可能使用Javascript在客戶機上創建的。)
爲簡潔起見,形式有一個單一的文件輸入:如何使用Yesod和Http-Conduit將FileInfo發佈到Web服務?
<form method="post" [email protected]{UploadR}>
<input type="file" name="myfile">
<button type="submit">
我的目標是處理表單數據,然後將文件上傳到一個Web服務。
我在處理表單時沒有問題,我擔心的是與Web服務交互。
例如,給出以下耶索德處理程序:
postUploadR :: Handler Html
postUploadR = do
mgr <- fmap httpManager getYesod
fi <- runInputPost $ ireq fileField "myfile"
let fSource = fileSource fi
fName = fileName fi
req <- parseUrl "http://webservice/upload"
let areq = req { method = methodPost
, requestBody = requestBodySourceChunked fSource
}
res <- httpLbs areq mgr
defaultLayout $ do
setTitle "file uploaded"
[whamlet|
<h3> Success
<p> You uploaded #{fName}.
|]
WebService的返回錯誤:fail post content-length
,但一切工作正常。也許服務器不支持分塊的請求體?