diff --git a/app/src/main/java/asgardius/page/s3manager/Downloader.java b/app/src/main/java/asgardius/page/s3manager/Downloader.java index 7462189..e2d07ac 100644 --- a/app/src/main/java/asgardius/page/s3manager/Downloader.java +++ b/app/src/main/java/asgardius/page/s3manager/Downloader.java @@ -127,10 +127,12 @@ public class Downloader extends AppCompatActivity { //Your code goes here //s3client.createBucket(bucket, location); //System.out.println(fkey); - document = DocumentFile.fromTreeUri(getApplicationContext(), fileuri); if (isfolder) { - if (object == null) { + document = DocumentFile.fromTreeUri(getApplicationContext(), fileuri); + if (prefix == null) { orequest = new ListObjectsRequest().withBucketName(bucket).withMaxKeys(1000); + } else { + orequest = new ListObjectsRequest().withBucketName(bucket).withPrefix(prefix).withMaxKeys(1000); } ArrayList objectlist = new ArrayList(); ObjectListing result = s3client.listObjects(orequest); @@ -160,7 +162,7 @@ public class Downloader extends AppCompatActivity { } for (String os : objectlist) { object = s3client.getObject(bucket, os); - filepath = document.createFile(null, os).getUri(); + filepath = document.createFile(null, os.replace(prefix, "")).getUri(); writeContentToFile(filepath, object); } } else { @@ -182,7 +184,11 @@ public class Downloader extends AppCompatActivity { //System.out.println("WakeLock released"); } simpleProgressBar.setProgress(100); - fileDownload.setText(getResources().getString(R.string.download_success)); + if (isfolder) { + fileDownload.setText(getResources().getString(R.string.batch_download_success)); + } else { + fileDownload.setText(getResources().getString(R.string.download_success)); + } fileDownload.setEnabled(false); //simpleProgressBar.setVisibility(View.INVISIBLE); } diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java index c0b6cb8..c2601bc 100644 --- a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -394,6 +394,9 @@ public class ObjectSelect extends AppCompatActivity { if (menuItem.getTitle() == getResources().getString(R.string.upload_file_here)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); upload(); + } else if (menuItem.getTitle() == getResources().getString(R.string.download_folder)) { + //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); + download(Name.get(position).toString(), true); } else if (menuItem.getTitle() == getResources().getString(R.string.object_info)) { objectInfo(prefix + Name.get(position).toString(), Name.get(position).toString()); } else if (menuItem.getTitle() == getResources().getString(R.string.file_del)) { @@ -421,7 +424,7 @@ public class ObjectSelect extends AppCompatActivity { //Toast.makeText(MainActivity.this, "You Clicked " + menuItem.getTitle(), Toast.LENGTH_SHORT).show(); if (menuItem.getTitle() == getResources().getString(R.string.download_file)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); - download(Name.get(position).toString()); + download(Name.get(position).toString(), false); } else if (menuItem.getTitle() == getResources().getString(R.string.upload_file_here)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); upload(); @@ -648,16 +651,22 @@ public class ObjectSelect extends AppCompatActivity { startActivity(intent); } - private void download(String filename) { + private void download(String filename, boolean isfolder) { Intent intent = new Intent(this, Downloader.class); - intent.putExtra("filename", filename); + if(isfolder) { + intent.putExtra("prefix", prefix+filename); + } else { + intent.putExtra("prefix", prefix); + intent.putExtra("filename", filename); + } intent.putExtra("endpoint", endpoint); intent.putExtra("username", username); intent.putExtra("password", password); intent.putExtra("region", location); intent.putExtra("style", style); intent.putExtra("bucket", bucket); + intent.putExtra("isfolder", isfolder); startActivity(intent); } } \ No newline at end of file diff --git a/app/src/main/res/menu/folder_menu.xml b/app/src/main/res/menu/folder_menu.xml index a5f1e60..35e4701 100644 --- a/app/src/main/res/menu/folder_menu.xml +++ b/app/src/main/res/menu/folder_menu.xml @@ -5,6 +5,10 @@ android:id="@+id/upload_file" android:title="@string/upload_file_here" /> + + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 75257e1..4090689 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -107,4 +107,6 @@ No se pudo cambiar la política CORS Política CORS cambiada exitosamente Descargar bucket + Descargar carpeta + Archivos descargados exitosamente \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 88ebeef..ea54a9d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,8 +27,10 @@ Open in Download file Download bucket + Download folder Cancel download File downloaded successfully + Files downloaded successfully Upload file to this bucket Upload folder to this bucket Your device is not compatible with this feature