0

画像を BLOB として Oracle テーブルに保存すると、BLOB が切り捨てられることがあります。

画像が切り捨てられた場合、常に同じ場所で切り捨てられます。

また、最初の明らかな答えであるサイズの問題ではありません。切り捨てられた 1 つのイメージは 126Kb で、正常なイメージは 3Mb です

blob 列にはサイズが指定されていないため、Oracle によれば、デフォルトで 2Gb に設定されています。

Java コードは次のとおりです。

OutputStream os = null;
try {
    os = image.getImage().getBinaryOutputStream();
    os.write(uploadFile.getFileData());

} catch (Exception e) {
    af = mapping.findForward("imageProblem");
} 
4

1 に答える 1

1

これは、OutputStream を閉じるのを忘れていたために発生しました。テーブルへのブロブの書き込みが完了する前に、驚くほど決定論的な方法でガベージコレクションが行われていました(私は推測します)。ストリームを閉じると、問題が修正されました。

OutputStream os = null;
try {
    os = image.getImage().getBinaryOutputStream();
    os.write(uploadFile.getFileData());

} catch (Exception e) {
    af = mapping.findForward("imageProblem");
} finally {
    if (os != null) {
      os.close();
    }
}
于 2013-09-13T15:48:32.323 に答える