画像のアップロード中に、以下のメソッドgetBlobKeyを使用して画像の BlobKey を取得し、その詳細をデータベースに保存しています。
private BlobKey getBlobKey(byte[] data, String fileName) {
System.out.println("Inside getBlobKey....");
GcsService gcsService = null;
GcsFilename gcsFilename = null;
String bucket = "nirantGallery";
fileName = fileName + "_" + UUID.randomUUID().toString();
try {
gcsService = GcsServiceFactory.createGcsService();
gcsFilename = new GcsFilename(bucket, fileName);
GcsFileOptions.Builder options_builder = new GcsFileOptions.Builder();
options_builder = options_builder.mimeType("image/jpeg");
GcsFileOptions options = options_builder.build();
GcsOutputChannel output = GcsServiceFactory.createGcsService().createOrReplace(gcsFilename, options);
output.write(ByteBuffer.wrap(data));
output.close();
// Get serving url
String gs_blob_key = "/gs/" + bucket + "/" + fileName;
BlobKey blob_key = BlobstoreServiceFactory.getBlobstoreService().createGsBlobKey(gs_blob_key);
ServingUrlOptions serving_options = ServingUrlOptions.Builder.withBlobKey(blob_key);
String serving_url = ImagesServiceFactory.getImagesService().getServingUrl(serving_options);
System.out.println("Serving URL: " + serving_url);
return blob_key;
} catch (Exception e) {
System.out.println("Inside exception....");
e.printStackTrace();
} finally {
gcsService = null;
}
return null;
}
問題は、これをローカル システムで実行しているときに動作し、次のような localhost URL が表示されることです。
Serving URL: http://127.0.0.1:8888/_ah/img/encoded_gs_key:L2dzL25pcmFudEdhbGxlcnkvaW1hZ2VfMF9kNjlmOGFjMS05ZTUzLTRiNzUtOTI1ZC1hYzU0ZWQzNzJkNDk
しかし、展開して実行すると機能しません。詳細の下にあるサーバーのログインを確認しました。
Error for /nirat-admin-portal/addGallery
java.lang.NoClassDefFoundError: com/google/api/client/extensions/appengine/http/UrlFetchTransport
at com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory.<clinit>(OauthRawGcsServiceFactory.java:31)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:59)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:44)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:40)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:75)
at com.sparks.nirant.datastore.DataStoreService.getBlobKey(DataStoreService.java:207)
at com.sparks.nirant.datastore.DataStoreService.saveImageMapToDataStore(DataStoreService.java:183)
at com.sparks.nirant.serviceImpl.AdminServiceImpl.addGallery(AdminServiceImpl.java:121)
at com.sparks.nirant.server.AdminController.doPost(AdminController.java:297)
手伝ってください。