これは手っ取り早い楽しいプロジェクトだと思いましたが、問題になりつつあります。:(
いくつかの画像をOracleテーブルにロードし、後でサーブレットを介して休止状態でそれらを取得したいと思います。
これが、画像を挿入するローダーの部分です。
String imageFileName = row[col++];
String ext = imageFileName.substring(imageFileName.lastIndexOf('.') + 1);
String imageFilePath = imageDir + imageFileName;
String mimeType = "image/" + ext;
image.setImageType(mimeType);
Image found = imageDAO.retrieve(imageId);
if(found==null){
//create a new one
byte[] bytes = loadImage(imageFilePath, mimeType);
image.setImageData(bytes);
image = imageDAO.create(image);
++created;
}
else{
//check if an update is needed
if(updateDate.after(found.getUpdated())){
byte[] bytes = loadImage(imageFilePath, mimeType);
found.setImageData(bytes);
found.setUpdated(updateDate);
image = imageDAO.update(found);
++updated;
}
}
}
サーブレットの内部は次のとおりです。
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String imageId = request.getParameter(KeyNames.PARM_IMAGE_ID);
if(imageId==null){
throw new NullPointerException("Image ID parameter is required");
}
Image image = getImageDAO().retrieve(imageId);
if(image==null){
throw new IllegalArgumentException(imageId + " is not a valid image ID");
}
response.setContentType(image.getImageType());
response.getOutputStream().write(image.getImageData());
response.getOutputStream().close();
return null;
}
私には単純に思えますが、ブラウザを使用してURLにアクセスすると、次のようになります。
「画像[url]にエラーが含まれているため表示できません」
サーブレットは正常にラップされているため、読み込み中または取得中に、画像データが破損していると推測する必要があります。次に何をすべきか推測できないので、アドバイスをいただければ幸いです。