Kullanıcıların sunucuma bir dosya yüklemesine izin veren bir form yazmaya çalışıyorum. Yesod, böyle bir işlev için fileAFormReq'i kullandığını ancak en son çalıştığı derleme hatalarıyla çalışmayı başaramadığını fark etti: "RenderMessage MySite t için örnek yok" Nasıl kullanılacağı konusunda herhangi bir örnek yok çok takdir edilecektir. sayesinde UriYesod kullanarak sunucuya nasıl dosya yükleyebilirim
cevap
Güncelleme 13-Eylül-2012: yoktur
resmi bana bu example verdi fonksiyonu fileAFormReq
üzerinde Googling here
yükleyerek dosya için yardım sayfasını korudu.
Sadece ilgili kısımlarla en az bir sürümünü yaptım.
{-# 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
bu ve sonra tarayıcınızda http://localhost:3000/file
ziyaret edin.
Bu yardımcı olur umarım. :)
Düzenleme:
Ah bekle, ne eksik açıktır. Derleme hatası dediğiniz gibi, Vakfınız için bir RenderMessage
örneğini kaçırıyorsunuz.
i18n için son çabaların form paketini biraz değiştirdiğini biliyorum. En son yesod sürümünü kullanıyorsanız, this adresini kontrol edin.
Yapıştırdığım kod, yesod-forms
paketinin eski i18n olmayan (varsayılan ingilizce anlamına gelir) sürümünü kullanır.
Teşekkürler. Eksik örnek hatası aslında benim dosyaAFormReq kullanmamanın bir yan etkisiydi (ghc'yi başka bir RenderMessage örneğinin olmasını bekledim ve sadece işaret ettiğin değil. çok kafa karıştırıcıydı. Her neyse, şimdi mükemmel çalışıyor, teşekkürler! –
- 1. Android'de görüntüyü sunucuya nasıl yükleyebilirim?
- 2. Yii2.0'da POST API aracılığıyla sunucuya nasıl dosya yükleyebilirim?
- 3. http kullanarak Android'e nasıl dosya yükleyebilirim?
- 4. jQuery'yi kullanarak yerel bir dosyayı nasıl yükleyebilirim? (dosya ile: //)
- 5. Java kullanarak http uzak sunucuya dosya nasıl yüklenir?
- 6. Yii2'de bir dosyaya nasıl dosya yükleyebilirim?
- 7. Yesod Düzenlenebilir Tablo
- 8. rtmfp kullanarak sunucuya bağlanılamıyor
- 9. Android youtube API kullanarak nasıl video yükleyebilirim?
- 10. Yesod Persistent Örnekler
- 11. Sunucuya XMLHttpRequest kullanarak nasıl dizin gönderilir
- 12. Curl CLI kullanarak raylar uygulamasında rubiuma bir dosyayı nasıl yükleyebilirim?
- 13. 2 ayrı resmi nasıl yükleyebilirim?
- 14. Yesod uygulamasını CGI olarak yapılandırın
- 15. yesod şablonlarında escape @ @ `işlevi
- 16. JSod, yesod işleyicisinden dön
- 17. Sunucuya girişte dosya türüne erişim asp.net
- 18. Modeli yardımcıya nasıl yükleyebilirim?
- 19. Android'de YouTube'a nasıl video yükleyebilirim?
- 20. .NET 2.0'ı kullanarak, bir sunucuya nasıl FTP yüklerim, dosya alırım ve dosyayı nasıl silebilirim?
- 21. Hata 500 laravel sunucuya dosya yükledikten sonra
- 22. Dinamik form oluşturma ile yesod
- 23. Yesod Oturum Açmadan Kimlik Doğrulama
- 24. İyonik ve Cordova'yı kullanarak görüntüyü aygıt galerisinden nasıl yükleyebilirim?
- 25. Wordpress'te google çeviriciyi kullanarak marathi dilini nasıl yükleyebilirim?
- 26. Setup.py'yi kullanarak özel bir PyPI'de barındırılan paketleri nasıl yükleyebilirim?
- 27. Sertifika yerel makine deposuna program aracılığıyla C# kullanarak nasıl yükleyebilirim?
- 28. Görüntüleri, hızlı kullanarak bulut kiti ile nasıl yükleyebilirim?
- 29. Python Selenium Webdriver'ı kullanarak varsayılan profili kromdan nasıl yükleyebilirim?
- 30. tomcat 8'i Amazon webservices EC2'ye nasıl yükleyebilirim EC2
Merhaba Uri, tam bir dosya yüklemesinin nasıl yazılacağı (yüklenen dosyalar sunarak, bunları Yesod'a gönderme ve silme) hakkında küçük bir blog yazısı yazdım https://ersocon.net/blog/2017/ 2/18/file-uploads-with-yesod – Alebon