2011-10-22 4 views
1

J'essaie de télécharger un ensemble de fichiers .jpg à partir d'Amazon S3 et de les stocker dans le stockage interne (ils ne peuvent donc pas être copiés par un utilisateur malveillant). Je suis arrivé jusqu'ici mais maintenant je suis coincé. J'ai trouvé plusieurs questions qui traitent des bitmaps ou des tableaux, mais rien sur le stockage d'une image, puis l'accès plus tard. Quelqu'un sait où je vais d'ici?Sérialiser l'objet (jpg) sur le stockage interne

String itemName = iconNames.getString(iconNames.getColumnIndexOrThrow(DbAdapter.KEY_ICON)); 
     itemName = itemName + ".jpg"; 
     GetObjectRequest getObject = new GetObjectRequest(bucket, itemName); 

     S3Object icon = mS3Client.getObject(getObject); 
     InputStream input = icon.getObjectContent(); 

J'ai regardé ici dans le guide dev et donne le code suivant http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

Mais c'est pour stocker une chaîne, pas une image ...

Répondre

0

Vous avez pour copier InputStream à OutputStream. Quelque chose comme ceci:

InputStream input = icon.getObjectContent(); 
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 

// Transfer bytes from in to out 
byte[] buf = new byte[1024]; 
int len; 
while ((len = input.read(buf)) > 0) { 
    fos.write(buf, 0, len); 
} 
input.close(); 
fos.close(); 
+0

Travaillé! Merci! ... maintenant je dois comprendre ce qu'il fait haha. – easycheese

0

Vous pourriez faire quelque chose comme ce qui suit.

Bitmap bitmapPicture = someBitmap 
String path = Environment.getExternalStorageDirectory().toString(); 
OutputStream fOut = null; 
File file = new File(path, "tmp.png"); 
fOut = new FileOutputStream(file); 

bitmapPicture.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
fOut.flush(); 
fOut.close(); 

MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName()); 
+0

N'est-ce pas le stockage sur le stockage externe si? – easycheese

+0

oui, vous avez raison. Vous n'avez pas vu cette partie dans votre question initiale. – broschb

Questions connexes