7

アップロードされたファイルをディレクトリに移動することによってファイル アップロードが実装されたデフォルトの Yesod スキャフォールドがある場合static、静的ディレクトリ内のファイルにリンクするにはどうすればよいですか? 通常の静的ファイルの場合、staticFilesスプライスは参照できる識別子を生成しますが、ユーザーがアップロードしたファイルの場合、これらの識別子をハードコードすることはできません。スプライスを手動で使用してこれを行うことができますが、プレフィックスを正しく#{}使用したことだけがチェック可能なコンポーネントであっても、もう少しタイプセーフなものがあることを望んでいました。static/

4

1 に答える 1

8

staticFilesタイプが。の識別子の束を生成しRoute Staticます。残念ながら、Haddockは関連する型族に関する情報を表示しないため、ドキュメントにコンストラクターを表示することはできませんが、使用可能なコンストラクターは次のStaticRouteとおりです。

https://github.com/yesodweb/yesod/blob/master/yesod-static/Yesod/Static.hs#L142

2つのフィールドは、パス情報とクエリ文字列パラメーターです。したがって、へのリンクを作成するには/static/foo/bar?baz=bin、次を使用できます。

StaticRoute ["foo", "bar"] [("baz", "bin")]

通常、クエリ文字列パラメータを作成する必要はありませんが、staticFilesキャッシュを無効にする目的でハッシュ値を挿入するために使用します。

于 2012-10-28T04:41:42.030 に答える