Content Lengthで調整
Yesodで、デカいファイルをアップロードすると、エラーが発生する
POST /list/0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Status: 413 Too Large 0.000029971s
ファイルのアップロードサイズというか、ContentLengthの調整で対応
設定ファイルからサイズを取れるようにする
* config/settings.ymlに追加
# Content Length Max MB max-byte: 50
* src/Settings.hs
data AppSettings = AppSettings
...
, appMaxByte :: Word64
-- ^ Content Length Max MB
...
FromJSONのインスタンス設定も修正
instance FromJSON AppSettings where
parseJSON = withObject "AppSettings" $ \o -> do
let defaultDev =
...
...
appMaxByte <- o .: "max-byte"
..
maximumContentLength関数を実装する
設定を取得してその値を元に、ContentLengthの上限を設定する
instance Yesod App where
...
...
-- Content Length Max
maximumContentLength app _ = do
let size = appMaxByte $ appSettings app
return $ size * 1024 * 1024 -- MB
...
これでデカいのがあがるようになる

0 件のコメント:
コメントを投稿