如何将图像从Android客户端上传到GAE(Google App Engine)数据存储区?
尚未发现任何教程,已经尝试了7天。
答案 0 :(得分:3)
好的,我可以像这样上传图片
公共课照片{
@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应用程序中 - > open photoendpoint.model(package) - > Photo.java 替换你的 public byte [] decodeBlobImage(){ } 强> 至 此
public byte [] decodeBlobImage(){ return 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 :(得分:2)
首先,您需要确定要上传的图像文件的大小。这是因为如果您使用的数据存储最多可以使用一个TEXT字段,该字段最多只能保存1 MB的数据。
我建议您使用Blobstore或更好的Google云端存储服务作为保存图像数据的方法。
步骤大致如下:
请查看以下thread示例代码。