将图像上传到谷歌云存储与应用程序android [英] upload image to google cloud storage with an application android
问题描述
我正在尝试将aN图像上传到Google云存储。
我发现了一个这样的例子,但它是针对java而不是Android,任何人都有一个例子,我该怎么办?
任何帮助将不胜感激
我终于可以上传图片在这样的谷歌存储上这样
class RetrieveFeedTask extends AsyncTask< Void,Void,String> {
private异常异常;
protected String doInBackground(Void ... params){
try {
列表< String> scopes = new ArrayList< String>();
scopes.add(StorageScopes.DEVSTORAGE_FULL_CONTROL);
httpTransport = new com.google.api.client.http.javanet.NetHttpTransport();
// agarro la key y la convierto en un file
AssetManager am = getAssets();
String STORAGE_SCOPE =https://www.google.com/analytics/feeds/;
InputStream inputStream = am.open(********* 114db0.p12); //你不应该把钥匙放在prod版本的资产中。
//将键转换为类文件。从输入流到文件。在辅助类中。
文件文件= stream2file(inputStream);
// Google Credentianls
GoogleCredential凭证=新的GoogleCredential.Builder()。setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId **********ic1bgevf3h@developer.gserviceaccount.com)
.setServiceAccountScopes((scopes))
.setServiceAccountPrivateKeyFromP12File(file)
.build();
String URI =https://storage.googleapis.com/+BUCKET_NAME+/+zzzzz3+。 JPG;
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential);
GenericUrl url = new GenericUrl(URI);
//字节数组保存数据,在这种情况下,我想以字节上传的图像。
资源res = getResources();
Drawable drawable = res.getDrawable(R.drawable.camera);
Bitmap bitmap =((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
byte [] bitMapData = stream.toByteArray();
HttpContent contentend = new ByteArrayContent(image / jpeg,bitMapData);
HttpRequest putRequest;
putRequest = requestFactory.buildPutRequest(url,contentend);
com.google.api.client.http.HttpResponse response = putRequest.execute();
String content = response.parseAsString();
Log.d(debug,response is:+ response.getStatusCode());
Log.d(debug,response content is:+ content);
} catch(IOException | GeneralSecurityException e){
// TODO自动生成的catch块
e.printStackTrace();
}
return;
}
protected void onPostExecute(String feed){
int i = 0;
int j = i;
// TODO:check this.exception
// TODO:使用feed
}
}
不要忘记下载jar并放在lib文件夹下:
- com.fasterxml.jackson.core.jar
- google-api -client-1.20.0.jar
- google-api-services-storage-v1beta2-rev21-1.15.0-rc.jar
- google-http-client-1.20.0.jar
- google-http-client-jackson2-1.20.0.jar
- google-http-client-jdo-1.20.0.jar
- google-oauth-client-1.20.0.jar
I'm trying to upload aN image to google cloud storage.
I found an example like this https://github.com/pliablematter/simple-cloud-storage that explains how to do that.
I created a project bucket, etc., but when I try to create a client id
I get this error:
An error has occurred. Please retry later
Where did this error come from?
Maybe there is another method to upload file to the google cloud storage with an android application?
_______________________________EDIT___________________________________________ in the new console i can see a message telling me only owner of the project can creat clients for the application web and account services. So error is caused because i connect with a account colaborator
_________________________________EDIT___________________________________________ Now i can create client id, but i don't know how i can upload file from android to bucket, i read this https://github.com/pliablematter/simple-cloud-storage but it is for java not Android, anyone has a example how can i do that ?
Any help will be appreciated
I can finally upload images on google storage like this
class RetrieveFeedTask extends AsyncTask<Void, Void, String> {
private Exception exception;
protected String doInBackground(Void... params) {
try {
List<String> scopes = new ArrayList<String>();
scopes.add(StorageScopes.DEVSTORAGE_FULL_CONTROL);
httpTransport= new com.google.api.client.http.javanet.NetHttpTransport();
//agarro la key y la convierto en un file
AssetManager am = getAssets();
String STORAGE_SCOPE = "https://www.google.com/analytics/feeds/" ;
InputStream inputStream = am.open("*********114db0.p12"); //you should not put the key in assets in prod version.
//convert key into class File. from inputstream to file. in an aux class.
File file =stream2file(inputStream);
//Google Credentianls
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("**********ic1bgevf3h@developer.gserviceaccount.com")
.setServiceAccountScopes((scopes))
.setServiceAccountPrivateKeyFromP12File(file)
.build();
String URI = "https://storage.googleapis.com/" + "BUCKET_NAME"+"/"+"zzzzz3"+".jpg";
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential);
GenericUrl url = new GenericUrl(URI);
//byte array holds the data, in this case the image i want to upload in bytes.
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.camera);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitMapData = stream.toByteArray();
HttpContent contentsend = new ByteArrayContent("image/jpeg", bitMapData );
HttpRequest putRequest;
putRequest = requestFactory.buildPutRequest(url, contentsend);
com.google.api.client.http.HttpResponse response = putRequest.execute();
String content = response.parseAsString();
Log.d("debug", "response is:"+response.getStatusCode());
Log.d("debug", "response content is:"+content);
} catch (IOException | GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
protected void onPostExecute(String feed) {
int i = 0;
int j = i;
// TODO: check this.exception
// TODO: do something with the feed
}
}
Don't forget to download jar and put it on lib folder: - com.fasterxml.jackson.core.jar - google-api-client-1.20.0.jar - google-api-services-storage-v1beta2-rev21-1.15.0-rc.jar - google-http-client-1.20.0.jar - google-http-client-jackson2-1.20.0.jar - google-http-client-jdo-1.20.0.jar - google-oauth-client-1.20.0.jar
这篇关于将图像上传到谷歌云存储与应用程序android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!