パスに従って画像を同期するためのより良い解決策は何ですか?
- データベース-Webサービス-モバイルアプリケーション
私のデータベースには、画像としてBLOBフィールドがあります。そのため、Webサービスとモバイルアプリケーション用に画像を転送する必要があります。
私は解決策を見つけました(試み)が、大きな画像は常にメモリから返されます。以下の解決策:
私のWebサービスでは、json APIを使用して、統合するblob画像を保存しています。ほら、私はbase64として画像を作成します。これは小さな画像では問題ありませんが、大きな画像(2000アイテム)はメモリ不足でトリガーされます。だから、以下の私のコード:
public void getImages(String date) throws Exception { JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); if (date != null) { try { Class.forName(DRIVER); connection = DriverManager.getConnection(URL, USER, PASS); Statement s = connection.createStatement(); ResultSet r = s.executeQuery("select * from images"); while (r.next()) { JSONObject o = new JSONObject(); byte[] imageBytes = r.getBytes("image"); String imageBase64 = DatatypeConverter.printBase64Binary(imageBytes); o.put("image", imageBase64); jsonArray.put(o); } jsonObject.put("images", jsonArray); } catch (SQLException e) { System.out.println(e); } } }
私のモバイルアプリケーションでは、jsonを読み取り、showimageの後にbase64を各画像にデコードします。したがって、画像をモバイルディスクやWebサービスディスクに保存する必要はありません。
モバイルアプリケーションはオフラインで動作します。私の問題を解決するためのアイデアはありますか?