2017-09-26 1 views
4

Ich versuche, Bild gespeichert auf aws S3 in meine Android-App mit Picasso, aber ich bekomme ein leeres Bild ohne Fehler in meinem logcat und nichts für mich von allgemein Debugging um die relevanten Codezeilen. Wir haben privaten Zugriff auf Bilder so Bild URL kann nicht mit Browser arbeiten. Ich muss Bild in meine Android-App mit Picasso anzeigen. aber es funktioniert nicht.Wie man Bild von aws mit Picasso mit privatem Zugang lädt

Mein Code-Snippet

new Picasso.Builder(getApplicationContext()).downloader(new S3Downloader(getApplicationContext(), s3Client, bucket)) 
       .build() 
       .load("https://s3-ea-east-8.amazonaws.com/music/MusicApp_3.jpg") 
       .placeholder(R.drawable.img_placeholder) 
       .memoryPolicy(MemoryPolicy.NO_CACHE) 
       .networkPolicy(NetworkPolicy.NO_CACHE) 
       .into(imageView); 

von oben Codebild verwendet, ist die Anzeige nur erste Mal nach App installieren. Beim nächsten Mal wird nur Platzhalterbild angezeigt

Ich verwende this library für die Anzeige von Bildern.

Das Problem ist nicht mit Picasso, es ist mit dem Laden eines Bildes von einer "privaten" URL.

bitte Lösungen vorschlagen

+0

überprüfen Sie Ihre Image-URL ... es gibt Server nicht gefunden .... –

+2

Überprüfen Sie dies: https://StackOverflow.com/Questions/30941673/retrieving-image-URL-with-Specific-Access-Privileges- using-aws-mobile-sdk-for-an –

+0

@VishalVaishnav Ich habe Dummy-URL in dieser Frage hinzugefügt. Ich kann die ursprüngliche URL nicht teilen. –

Antwort

1

einfach verwenden:

Picasso.with(getApplicationContext()).load(your_url).noFade().into(imageView); 
+2

Dies beantwortet OPs Frage nicht. Das Problem ist nicht mit Picasso, es ist mit dem Laden eines Bildes von einer "privaten" URL. – nbokmans

+0

@ nbokmans richtig Bitte schlagen Sie jede Antwort vor, die Sie haben –

1
write below code to load image in Picasso. 
variables:- 
String file_path       -->> this is your image file path 
Imageview mViewHolder.img_post_photo  -->> this is your imageview to load image. 
     Picasso.with(context) 
           .load(file_path) 
           .placeholder(R.mipmap.ic_launcher) 
           .error(R.mipmap.ic_launcher) 
           .into(mViewHolder.img_post_photo, new Callback() { 
            @Override 
            public void onSuccess() { 

            } 

            @Override 
            public void onError() { 
             Picasso.with(context) 
               .load(file_path) 
               .placeholder(R.mipmap.ic_launcher) 
               .error(R.mipmap.ic_launcher) 
               .into(mViewHolder.img_post_photo); 
            } 
           }); 
Set dependencies in your app build.gradle file:- 
compile 'com.squareup.picasso:picasso:2.5.2' 

hope this code helps you. 
+1

Das Problem ist nicht mit Picasso, es ist mit dem Laden eines Bildes von einer "privaten" URL. –

+0

Ok dann bitte beziehen Sie sich auf dieses Dokument: - https://stackoverflow.com/questions/30941673/retrieving-image-url-with-specific-access-privileges-using-aws-mobile-sdk-for-an- – InsaneCat

0

Sie benötigen einen presigned URL aus dem S3-Client zu generieren und Sie können passieren, dass URL zu Picasso. Diese URL wird öffentlich sein und einen Termin haben.

Verwandte Themen