Я работаю со стандартным проектом Yesod scaffolding.
Я создал страницу, которая отображает простую форму для загрузки файлов.
(форма, скорее всего, будет создан на клиенте с помощью Javascript.)
Для краткости, форма имеет один входной файл:Как отправить FileInfo в веб-службу с помощью Yesod и Http-Conduit?
<form method="post" [email protected]{UploadR}>
<input type="file" name="myfile">
<button type="submit">
Моя цель заключается в обработке данных формы, а затем загрузить файл веб-службы.
У меня нет проблем с обработкой формы, моя проблема связана с веб-службой.
Например, если следующий обработчик Есод:
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}.
|]
вебсервис возвращает ошибку: fail post content-length
, но все остальное работает, как ожидалось. Возможно, сервер не поддерживает кусок запроса?