[JAVA] [AWS / S3] Après tout, comment télécharger plusieurs fichiers?

[Initiation] Fichiers créés avec votre propre application Android (plusieurs fichiers sont générés à la fois) Puisqu'il devenait nécessaire de le gérer sur le serveur et de le recevoir sur un autre terminal, Implémenté rapidement avec S3 depuis Mobile Hub.

[Trébuchant] -Spécifiez s3Client! J'obtiens l'erreur. ・ Accès à AWS S3 refusé J'obtiens l'erreur. -Ne pas interagir avec le serveur pendant le processus de synchronisation! J'obtiens l'erreur. ・ Comment puis-je implémenter le téléchargement de plusieurs fichiers? Non écrit dans le didacticiel. -Bien qu'il n'ait été implémenté qu'une seule fois, une erreur se produit souvent lors de l'appel de s3Client.

Des gens qui avaient des soucis similaires. →AWS S3 Java SDK - Access DeniedAmazon s3 upload multiple files android

[Solution]

class AsyncAWS_upload extends AsyncTask<String, Void, String> {

    Activity BaseActivity;

    AsyncAWS_upload(Activity activity) {
        this.BaseActivity = activity;
    }

    @Override
    protected String doInBackground(String... strings) {
        uploadData();
        return null;
    }

    public void uploadData() {

       TransferUtility transferUtility =
                TransferUtility.builder()
                        .context(getApplicationContext())
                        .awsConfiguration(AWSMobileClient.getInstance().getConfiguration())
                        .s3Client(new AmazonS3Client(AWSMobileClient.getInstance().getCredentialsProvider()))
                        .build();


        TransferObserver uploadObserver =
                transferUtility.upload(
                        "protected/hoge.file",
                        new File(Environment.getExternalStorageDirectory() + "/hoge.file"));
              
               transferUtility.upload(
                        "hogehoge_test/hoge.csv",
                        new File(Environment.getExternalStorageDirectory() + "/hoge.csv"));

        uploadObserver.setTransferListener(new TransferListener() {
            @Override
            public void onStateChanged(int id, TransferState state) {
                if (TransferState.COMPLETED == state) {
                    LOGD("XXXTransferStateonStateChanged", "FINISH");
                    // Handle a completed upload.
                }
            }

            @Override
            public void onProgressChanged(
                    int id, long bytesCurrent, long bytesTotal) {
                LOGD("XXXTransferStateonProgressChanged", "HERE");
                // TODO Auto-generated method stub
            }

            @Override
            public void onError(int id, Exception ex) {
                // TODO Auto-generated method stub
                LOGD("XXXTransferStateonError", String.valueOf(ex));
            }

        });

        // If your upload does not trigger the onStateChanged method inside your
        // TransferListener, you can directly check the transfer state as shown here.
        if (TransferState.COMPLETED == uploadObserver.getState()) {
        }
    }
}

-Spécifiez s3Client. (Utilisez le code officiel) ・ Dans build.gradle compile ('com.amazonaws:aws-android-sdk-mobile-client:2.6.+@aar') { transitive = true; } Si vous n'écrivez pas correctement, com.amazonaws.mobile.client.AWSMobileClient N'est pas chargé. -Changer le droit d'accès à la baguette côté hôte. -Créer une sous-classe pour le traitement asynchrone et l'exécuter à partir de la classe principale. -Faire le transferUtility avoir plusieurs informations de téléchargement.

Travailler avec. J'ai sauté la compréhension des détails, je vais donc le compléter dès que je vérifierai le document. Merci pour le document en anglais.

Recommended Posts

[AWS / S3] Après tout, comment télécharger plusieurs fichiers?
[Rails] Comment télécharger des images sur AWS S3 à l'aide de Carrierwave et de fog-aws
[Rails] Comment télécharger des images sur AWS S3 à l'aide de refile et refile-s3
Comment écrivez-vous l'opérateur ternaire (? :)
Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)
Utilisez-vous l'instruction for après tout? Utilisez-vous l'instruction while? Utilisation correcte des instructions for et while