diff --git a/app/src/main/java/asgardius/page/s3manager/Uploader.java b/app/src/main/java/asgardius/page/s3manager/Uploader.java
index 0284124..af1c6c7 100644
--- a/app/src/main/java/asgardius/page/s3manager/Uploader.java
+++ b/app/src/main/java/asgardius/page/s3manager/Uploader.java
@@ -65,6 +65,7 @@ public class Uploader extends AppCompatActivity {
Thread uploadFile, uploadProgress;
boolean style, isfolder;
boolean started = false;
+ boolean cancel = false;
long transfered = 0;
private static final long MAX_SINGLE_PART_UPLOAD_BYTES = 5 * 1024 * 1024;
private WifiManager.WifiLock mWifiLock;
@@ -107,6 +108,7 @@ public class Uploader extends AppCompatActivity {
//buttonaction
if (started) {
started = false;
+ cancel = true;
uploadFile.interrupt();
//simpleProgressBar.setVisibility(View.INVISIBLE);
} else {
@@ -149,21 +151,35 @@ public class Uploader extends AppCompatActivity {
for (int i = 0; i < filelist.length; i++) {
filepath.add(filelist[i].getName());
if(filelist[i].isDirectory()) {
- //Nothing for now
treelevel++;
fileindex.add(0);
document = filelist[i];
filelist = document.listFiles();
while (treelevel >= 1 && fileindex.get(treelevel) < filelist.length) {
filepath.add(filelist[fileindex.get(treelevel)].getName());
- System.out.println(String.join("/", filepath));
- if(filelist[fileindex.get(treelevel)].length()%MAX_SINGLE_PART_UPLOAD_BYTES == 0) {
- System.out.println((filelist[fileindex.get(treelevel)].length()/MAX_SINGLE_PART_UPLOAD_BYTES)+" parts");
+ if (filelist[fileindex.get(treelevel)].isDirectory()) {
+ treelevel++;
+ fileindex.add(0);
+ document = filelist[i];
+ filelist = document.listFiles();
} else {
- System.out.println(((filelist[fileindex.get(treelevel)].length()/MAX_SINGLE_PART_UPLOAD_BYTES)+1)+" parts");
+ System.out.println(String.join("/", filepath));
+ filepath.remove(treelevel);
+ if(filelist[fileindex.get(treelevel)].length()%MAX_SINGLE_PART_UPLOAD_BYTES == 0) {
+ System.out.println((filelist[fileindex.get(treelevel)].length()/MAX_SINGLE_PART_UPLOAD_BYTES)+" parts");
+ } else {
+ System.out.println(((filelist[fileindex.get(treelevel)].length()/MAX_SINGLE_PART_UPLOAD_BYTES)+1)+" parts");
+ }
+ fileindex.set(treelevel, fileindex.get(treelevel)+1);
+ }
+ if(fileindex.get(treelevel) == filelist.length) {
+ fileindex.remove(treelevel);
+ document = document.getParentFile();
+ filelist = document.listFiles();
+ treelevel--;
+ filepath.remove(treelevel);
+ fileindex.set(treelevel, fileindex.get(treelevel)+1);
}
- filepath.remove(treelevel);
- fileindex.set(treelevel, fileindex.get(treelevel)+1);
}
document = document.getParentFile();
filelist = document.listFiles();
@@ -182,7 +198,11 @@ public class Uploader extends AppCompatActivity {
}
} else {
ufile = readContentToFile(fileuri);
- filesize = ufile.length();
+ if(ufile.length()%MAX_SINGLE_PART_UPLOAD_BYTES == 0) {
+ filesize = ufile.length()/MAX_SINGLE_PART_UPLOAD_BYTES;
+ } else {
+ filesize = (ufile.length()/MAX_SINGLE_PART_UPLOAD_BYTES)+1;
+ }
//PutObjectRequest request = new PutObjectRequest(bucket, fkey, ufile);
//upload = s3client.putObject(request);
putS3Object(bucket, fprefix.getText().toString(), ufile);
@@ -234,7 +254,12 @@ public class Uploader extends AppCompatActivity {
started = false;
//simpleProgressBar.setVisibility(View.INVISIBLE);
//fileUpload.setEnabled(true);
- fileUpload.setText(getResources().getString(R.string.retry));
+ if (cancel) {
+ fileUpload.setText(getResources().getString(R.string.upload_canceled));
+ } else {
+ fileUpload.setText(getResources().getString(R.string.upload_failed));
+ }
+ fileUpload.setEnabled(false);
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
}
});
@@ -395,6 +420,7 @@ public class Uploader extends AppCompatActivity {
PutObjectRequest request = new PutObjectRequest(bucket, objectKey, file);
PutObjectResult result = s3client.putObject(request);
long bytesPushed = result.getMetadata().getContentLength();
+ transfered++;
//LOGGER.info("Pushed {} bytes to s3://{}/{}", bytesPushed, bucket, objectKey);
}
@@ -429,7 +455,7 @@ public class Uploader extends AppCompatActivity {
partETags.add(uploadResult.getPartETag());
fileOffset += partSize;
- transfered = fileOffset;
+ transfered++;
}
// Complete the multipart upload.
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 8c964d2..e722de1 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -27,6 +27,7 @@
Cancelar subida
Reintentar
Descarga fallida
+ Subida fallida
Éxito
Crear nuevo bucket
Bucket creado exitosamente
@@ -86,6 +87,7 @@
Archivos
Debe establecer una fecha de expiración para compartir archivos
Descarga cancelada
+ Subida cancelada
Ajustes
Guardar ajustes
Tamaño máximo de cache multimedia (en MiB)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cac2288..32cc62f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,6 +44,8 @@
Retry
Download failed
Download canceled
+ Upload failed
+ Upload canceled
Success
Properties
File Size