2

サーブレット出力ストリームをフラッシュしようとすると、apache commons fileupload が次の例外をスローする回避策を知っている人はいますか?

FileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

基本的に、apache commons fileupload を使用してアップロードされた各ファイルをループするコードがあり、各ファイルout.flush()に関する統計を取得しようとしています。すなわち:

    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);

    for(FileItem field : items) {
        if (!field.isFormField() && field.getName().length()>0 && field.getName().getSize()>0) {
            ArticleImport helper = new ArticleImport(new ArticleImportResponder(user,out));
            // This helper object uses out.flush() to provide feedback to the user.
            helper.process(field.getInputStream(), user);
            }
        }
    }

この問題は Apache Tomcat 6.0.20 では発生しませんが、以前のバージョンでは発生します。

4

1 に答える 1

3

残念ながら、これは既知のバグです。少なくとも 6.0.20 を使用していることを確認する以外に、これに対してできることはありません。

次の呼び出しを使用して、実行中の tomcat のバージョンを検出し、それを使用して out.flush() を使用できるかどうかを判断できます。

javax.servlet.ServletContext.getServerInfo();
于 2010-02-03T09:03:09.097 に答える