我正在尝试将图像从 Android 直接上传到 Google 云存储。但API似乎不起作用。他们有一些与 App 引擎相关的 Java 示例。我没有看到任何被证明可以在 Android 上运行的示例。
在 Android 上,我尝试使用 json api 上传图像。我可以上传图像对象,但它似乎已损坏。此外,生成身份验证令牌似乎也很棘手。
我现在对此感到震惊。地球上有没有人尝试过使用 Java 客户端或 Json API 从 Android 上传图像/视频并成功?有人可以指出我正确的方向吗? Google 的这个 Storage api 的使用体验非常令人失望。如果有人这样做过,请分享您的经验。
下面是我在尝试使用 GCS 的 JSON API 时从 Android 尝试的代码。
private static String uploadFile(RichMedia media) {
DefaultHttpClient client = new DefaultHttpClient();
Bitmap bitmap = BitmapUtils.getBitmap(media.getLocalUrl());
HttpPost post = new HttpPost(GCS_ROOT + media.getLocalUrl() + "_" + System.currentTimeMillis());
if(media.getType() == RichMedia.RichMediaType.PICTURE) {
post.setHeader("Content-Type", "image/jpeg");
} else {
post.setHeader("Content-Type", "video/mp4");
}
post.setHeader("Authorization", "AIzaSyCzdmCMwiMzl6LD7R2obF0xSgnnx5rEfeI");
//post.setHeader("Content-Length", String.valueOf(bitmap.getByteCount()));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
try {
post.setEntity(new StringEntity(new Gson().toJson(byteArray).toString()));
HttpResponse response = client.execute(post);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String eachLine = null;
StringBuilder builder = new StringBuilder();
while ((eachLine = reader.readLine()) != null) {
builder.append(eachLine);
}
L.d("response = " + builder.toString());
JSONObject object = new JSONObject(builder.toString());
String name = object.getString("name");
return name;
} catch (IOException e) {
L.print(e);
} catch (JSONException e) {
L.print(e);
}
return null;
}
我在这里遇到两个问题。
上传到服务器的文件已损坏。这与我上传的图片不一样。它是腐败的。
授权密钥经常过期。就我而言,我使用 gsutil 生成的身份验证代码。
由于没有人回答这个问题,让我更新一下我解决这个问题的方法。我最终遵循了这个https://github.com/pliablematter/simple-cloud-storage https://github.com/pliablematter/simple-cloud-storage项目。
我可以从我的 Android 应用程序将图片/视频上传到 GCS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)