Я пытаюсь загрузить изображение с Android непосредственно в хранилище облачных хранилищ Google. Но API, похоже, не работает. У них есть примеры Java, которые привязаны к движку App. Я не вижу образца, который, как доказано, работает на Android.
На Android я попытался использовать json api для загрузки изображения. Я могу загрузить объект изображения, но он кажется поврежденным. Более того, генерация маркера аутентификации тоже кажется сложной.
Я поражен этим прямо сейчас. Кто-нибудь на этой земле когда-либо пытался загрузить изображение/видео с Android с помощью Java-клиента или Json API и преуспел? Может кто-нибудь указать мне в правильном направлении, пожалуйста. Это очень разочаровывает опыт работы с этим хранилищем api от Google. Пожалуйста, поделитесь своими впечатлениями, если кто-то это сделает. Ниже приведен код, который я пытаюсь использовать для Android, пытаясь использовать API GCS JSON.
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;
}
Здесь я столкнулся с двумя проблемами.
-
Файл, загруженный на сервер, поврежден. Это не тот же образ, который я загрузил. Это текущее значение.
-
Ключ авторизации истекает очень часто. В моем случае я использую код auth, созданный gsutil.