1

( Valums uploader )を使用してファイルをアップロードしており、サーバー側でサーブレットを使用しています。ファイル形式は申請書/pdfです。コードは次のとおりです。

String filename= request.getHeader("X-File-Name");
InputStream is = request.getInputStream();
File tmp = File.createTempFile(filename, "");
tmp.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tmp);
IOUtils.copy(is, fos);
byte[] bytes = new byte[(int) tmp.length()];
is.read(bytes);

現在、これらのバイトは longblob としてデータベースに格納されています。しかし、上記のコードの inputStream がファイルにデータを追加しているようです。そのため、ファイル データが破損しています。同じデータを pdf ファイルとしてダウンロードしたところ、元のアップロード ファイルと現在ダウンロードされているファイルの両方が同じサイズであることがわかりましたが、ダウンロードしたファイルを Acrobat で開くと、「ファイルが破損しています」と報告されます。アップロード要求には、ファイル入力のみを使用しました。そのため、inputStream に他の入力パラメータが存在する可能性はありません。また、上記のコードのバイト配列は、ダウンロード用に渡されたものです。データが破損するのはなぜですか?

4

1 に答える 1