7

10K (10000 バイト) のMultipartResolvera で次のように定義できます。maxUploadSize

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10000"/>
</bean

ただし、管理者が管理インターフェイスを介してこの制限を超える大きなファイルをアップロードする必要がある場合は、これを許可するようにアプリを一時的に再構成する必要があります。その後、通常のユーザーがこの制限を超えないように再度構成し直してください。 .

もちろん、これが発生している間、通常のユーザーは警告を受けずに大きなファイルをこっそり持ち込む可能性があります。

maxUploadSizeこれら 2 つの状況で異なるリゾルバーを使用するように構成する方法はありますか?

4

3 に答える 3

4

最も簡単な方法は、通常のユーザーの代わりに管理者用に異なる構成の Bean の実装を使用することです。これを行う最もエレガントな方法は、セッション スコープの Bean インスタンスを生成するSpring 3.0 @Configuration Beanを用意することです (セッション スコープの Bean で使用していない場合に備えて、スコープ プロキシも以下に追加します。それ以外の場合は、次のような単純な注釈を使用できます: @Scope(WebApplicationContext.SCOPE_SESSION))。

@Configuration
public class MultipartResolverBuilder {
    @Bean @Scope(value = WebApplicationContext.SCOPE_SESSION,
           proxyMode = ScopedProxyMode.TARGET_CLASS)
    public CommonsMultipartResolver getMultipartResolver() {
        CommonsMultipartResolver mr = new CommonsMultipartResolver();
        if (user_is_not_admin) {
            mr.setMaxUploadSize(10000);
        }
        return mr;
    }
}

もちろん、ユーザーが管理者であるかどうかを判断するコードを追加する必要があります。また、注釈ベースの構成をスキャンするためのサポートを追加する必要があります (まだ取得していない場合; <context:annotation-config/>/<context:component-scan .../>は持っているかなり一般的なもの)。

于 2011-07-07T12:34:42.237 に答える
0

通常のユーザー用と管理者用の 2 つの multipartResolver Bean を作成する必要がある場合があります。アプリでは、ユーザーの役割に基づいて使用する Bean を選択できます。

于 2011-07-07T10:50:04.673 に答える
0

この問題をビジネス ロジックで解決するのはどうでしょうか。管理者に十分な maxUploadSize 値を設定し、ユーザーが管理者であるかどうか、およびファイルのサイズを確認するだけです。

于 2011-07-07T11:23:24.980 に答える