0

これは手っ取り早い楽しいプロジェクトだと思いましたが、問題になりつつあります。:(

いくつかの画像を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]にエラーが含まれているため表示できません」

サーブレットは正常にラップされているため、読み込み中または取得中に、画像データが破損していると推測する必要があります。次に何をすべきか推測できないので、アドバイスをいただければ幸いです。

4

1 に答える 1

0

恥ずかしい!これは、実際にコードを調べて何をするのかを調べずに、インターネットからコードを実行することで得られるものです。

したがって、答えは、DBに格納するために、書き込み可能なラスターを介してイメージを実行していたということでした。ええと、DUH!画像をラスタライズすると、pngではなくなります。

したがって、入力ファイルからバイトコピーを実行し、それをBLOBに格納するだけで、正常に機能します。

今私を撃ちます。

助けてくれてありがとう!

于 2012-12-04T12:39:34.783 に答える