사용자가 파일을 내 서버에 업로드 할 수있는 양식을 작성하려고합니다. Yesodod는 이러한 기능을 위해 fileAFormReq를 사용했지만 컴파일 오류가 발생하여 작동하지 않게되었습니다. 최신은 "(RenderMessage MySite t)에 대한 인스턴스가 없습니다" 사용 방법에 대한 예제가 모두 삭제되었습니다. 그것은 매우 감사하겠습니다. 감사합니다, 열린Yesod를 사용하여 서버에 파일을 업로드하는 방법
답변
업데이트 (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에 대한 최근의 노력이 양식 패키지를 약간 변경 한 것을 알고 있습니다. 최신 버전의 yesod를 사용하는 경우 this을 확인하십시오.
붙여 넣은 코드는 yesod-forms
패키지의 이전 비 -i18n (기본 영어 버전) 버전을 사용합니다.
감사합니다. 누락 된 인스턴스 오류는 실제로 fileAFormReq을 제대로 사용하지 않는 부작용이었습니다 (ghc에서 결과로 다른 RenderMessage 인스턴스가있을뿐 아니라 사용자가 지적한 결과가 아님). , 그것은 매우 혼란 스러웠다). 어쨌든 이제 완벽하게 작동합니다. 감사합니다! –
- 1. 거대한 (GB) 파일을 웹 서버에 업로드하는 방법
- 2. 파일을 서버에 업로드하는 방법은 무엇입니까?
- 3. 서버에 업로드하는 방법?
- 4. 저지 쾌적한 웹 서비스를 사용하여 서버에 파일을 업로드하는 방법
- 5. 업로드하는 방법 파일을 만들지 않고 웹 서버에 파일을 업로드 하시겠습니까?
- 6. 3gp 파일을 업로드하는 방법
- 7. OPA를 사용하여 파일을 저장/업로드하는 방법
- 8. php를 사용하여 상위 디렉토리에 파일을 업로드하는 방법
- 9. 파일을 업로드하는 방법?
- 10. Android를 사용하여 키가있는 서버에 파일을 업로드하는 방법은 무엇입니까?
- 11. AsiHttpRequest로 큰 파일을 업로드하는 방법
- 12. HTML을 사용하여 웹 사이트에 파일을 업로드하는 방법
- 13. node.js에서 파일을 업로드하는 방법
- 14. .txt 파일을 http 서버에 업로드하는 방법은 무엇입니까?
- 15. iPhone SDK의 서버에 파일을 업로드하는 방법은 무엇입니까?
- 16. 내 서버에 pdf 파일을 업로드하는 방법은 무엇입니까?
- 17. 자바 스크립트를 사용하여 파일을 업로드하는 방법
- 18. iPhone : NSData를 XML로 포함하여 서버에 업로드하는 방법?
- 19. django에서 여러 파일을 업로드하는 방법
- 20. as3 : httpRequest를 사용하여 비트 맵 데이터를 서버에 업로드하는 방법
- 21. Blackberry jde : MultipartPostData를 사용하여 서버에 이미지를 업로드하는 방법
- 22. asp.net에서 서버에 폴더를 업로드하는 방법 C#
- 23. Windows Phone 7 서버에 사진을 업로드하는 방법
- 24. 자바에서 이미지 파일을 업로드하는 방법
- 25. iphone 앱에 파일을 업로드하는 방법
- 26. PHP에서 사용자 인터페이스없이 데이터베이스에서 파일을 업로드하는 방법
- 27. 서버에 파일을 만들고 서버에 저장하는 방법
- 28. ajaxuploader 파일을 다른 서버에 저장하는 방법
- 29. Yesod를 배포하는 데 권장되는 방법은 무엇입니까?
- 30. FTP에서 파일을 다운로드하고 다시 업로드하는 방법
안녕하십니까. 예를 들어, 전체 파일 업로드 (업로드 된 파일 제공, Yesod에서 파일 참조 및 삭제)에 대한 간단한 블로그 게시물을 작성했습니다. https://ersocon.net/blog/2017/ 2/18/file-uploads-yesod – Alebon