【发布时间】:2014-05-07 03:00:08
【问题描述】:
如何将图像从 Android 客户端上传到 GAE (Google App Engine) 数据存储区?
尚未找到教程,已尝试过去 7 天。
【问题讨论】:
标签: android google-app-engine google-cloud-datastore
如何将图像从 Android 客户端上传到 GAE (Google App Engine) 数据存储区?
尚未找到教程,已尝试过去 7 天。
【问题讨论】:
标签: android google-app-engine google-cloud-datastore
好的,我可以上传这样的图片
公开课照片{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
private Blob blobImage;
public Blob getBlobImage() {
return blobImage;
}
public void setBlobImage(byte[] bytes) {
this.blobImage = new Blob(bytes);
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
在你的 android 应用程序中 -> 打开 photoendpoint.model (package) -> Photo.java 更换你的 公共字节[] decodeBlobImage() { } 到 这个
公共字节[] decodeBlobImage() { 返回 com.google.api.client.util.Base64.decodeBase64(blobImage); }
在您的活动中执行此操作
Photo photo = new Photo();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.sherlock);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
photo.encodeBlobImage(byteArray);
photo.setName("Sherlock");
photo.setName("sherlock");
photo.setType("image/jpeg");
photo.setId((long) 8232);
Photoendpoint.Builder builder = new Photoendpoint.Builder(
AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
null);
builder = CloudEndpointUtils.updateBuilder(builder);
Photoendpoint endpoint = builder.build();
Log.d("Exception", "inserting image");
try {
Log.d("Exception", "inserting");
endpoint.insertphoto(photo).execute();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("Exception", "" + e);
}
【讨论】:
首先,您需要确定要上传的图片文件的大小。这是因为如果您使用的数据存储区充其量只能使用最多只能保存 1 MB 数据的 TEXT 字段。
我建议您考虑使用 Blobstore 或更好的 Google Cloud Storage 服务来保存您的图像数据。
步骤大致如下:
查看以下thread 以获取示例代码。
【讨论】: