ユーザーがサーバーにファイルをアップロードするためのフォームを作成しようとしています。 Yesodは、このような機能に対してfileAFormReqを使用していましたが、コンパイルエラーが発生しました。最新のものは "インスタンスがない(RenderMessage MySite t)" それは高く評価されます。 おかげで、 ウリYesodを使用してサーバーにファイルをアップロードする方法
8
A
答えて
13
更新13 - 9月 - 2012年:あり
関係者は私にこのexampleを与えた機能fileAFormReq
にグーグルhere
アップロードするファイルのヘルプページを維持しました。
私は、関連する部分だけを備えた最小限のバージョンを作成しました。
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}
import Yesod.Core
import Yesod.Form
import Yesod.Form.MassInput
import Control.Applicative
import Data.Text (Text, pack)
import Network.Wai.Handler.Warp (run)
import Data.Time (utctDay, getCurrentTime)
import qualified Data.Text as T
import Control.Monad.IO.Class (liftIO)
mkYesod "HelloForms" [parseRoutes|
/file FileR GET POST
|]
data HelloForms = HelloForms
instance RenderMessage HelloForms FormMessage where
renderMessage _ _ = defaultFormMessage
instance Yesod HelloForms where
approot _ = ""
main = toWaiApp HelloForms >>= run 3000
fileForm = renderTable $ pure (,)
<*> fileAFormReq "Required file"
<*> fileAFormOpt "Optional file"
getFileR = do
((res, form), enctype) <- runFormPost fileForm
defaultLayout [whamlet|
<p>Result: #{show res}
<form method=post enctype=#{enctype}>
<table>
^{form}
<tr>
<td>
<input type=submit>
|]
postFileR = getFileR
runhaskell
これをしてからお使いのブラウザでhttp://localhost:3000/file
をご覧ください。
これが役に立ちます。 :)
編集:
ああ待って、それはあなたが欠けているものは明らかです。ちょうど言ったコンパイルエラーとして、RenderMessage
あなたの財団のインスタンスがありません。
私は最近i18nの努力がフォームパッケージを少し変更したことを知っています。 yesododの最新バージョンを使用している場合は、thisをチェックしてください。
私が貼り付けたコードは、yesod-forms
パッケージの古い非i18n(デフォルトは英語を意味する)バージョンを使用しています。
+2
ありがとうございます。欠落しているインスタンスエラーは実際にfileAFormReqを正しく使用していない私の副作用でした(ghcの結果で、あなたが指摘したものだけでなく、別のRenderMessageインスタンス、それは非常に混乱していた)。とにかく今は完璧に動作しますので、ありがとう! –
関連する問題
- 1. サーブレットを使用してサーバーにファイルをアップロードする方法は?
- 2. UIImagePickerControllerを使用してサーバーにビデオをアップロードする方法
- 3. javascriptを使用してgoogleドライブからサーバーにファイルをアップロードする方法
- 4. Cでhttpwebrequestを使用してzipファイルをサーバーにアップロードする方法
- 5. .pdf .doc .txtファイルをAndroidを使用してサーバー(mysqlデータベース)にアップロードする方法
- 6. JSP/ServletとAjaxを使用してサーバーにファイルをアップロードする方法は?
- 7. Webサービスを使用してWindowsフォームアプリケーションからサーバーにファイルをアップロードする方法
- 8. ファイルをサーバーにアップロードする方法は?
- 9. ファイルをサーバーにアップロードする方法は?
- 10. POSTを使用してHTTPサーバー上のファイルをアップロードする方法は?
- 11. libcurlを使用してEFTサーバーにファイルをアップロードするクライアント
- 12. Filezillaを使用してサーバーにファイルをアップロードする
- 13. phpとphpMyAdminを使用してサーバーにファイルをアップロードする
- 14. C++ HTTPリクエストを使用してサーバーにファイルをアップロードする
- 15. レトロフィットを使用してサーバーにファイルをアップロードする
- 16. Meteorファイルを使用してサーバーにファイルをアップロードveliovグループ
- 17. xmlhttprequestを使用してaws s3にファイルをアップロードする方法
- 18. ジーンズを使用してApkファイルを布にアップロードする方法
- 19. Windowsサービスを使用してラックスペースクラウドにファイルをアップロードする方法
- 20. ウェブフレームワークを使用してvibe.dにファイルをアップロードする方法
- 21. PHPファイルのアップロードを使用してサーバーにファイルをアップロードできませんか?
- 22. 非サーバー側入力コントロールを使用してファイルをアップロードする
- 23. fsを使用してファイルをサーバーに保存する方法
- 24. Javaを使用してXML Webserviceを使用してファイルをアップロードする方法
- 25. ファイルを.csrをAndroidを使用してWebサーバーにアップロード
- 26. サーバーから画像ファイルをアップロードして表示する方法
- 27. chilkat pythonを使用してzipファイルをSFTPサーバーにアップロード
- 28. AJAXを使用してサーバーにファイルをアップロード
- 29. jquery.MultiFileを使用して複数のファイルをFTPサーバーにアップロード
- 30. IPhoneアプリケーションのASIHTTPRequestを使用してサーバーに画像ファイルをアップロード
こんにちはウリですが、私は完全なファイルアップロード(アップロードされたファイルを提供し、Yesodでそれらを参照し、それらを削除する)https://ersocon.net/blog/2017/を書く方法について少しブログ記事を書いています。 2/18/file-uploads-with-yesod – Alebon