Merge pull request 'transfer-progress' (#8) from transfer-progress into main
Reviewed-on: https://patrice.asgardius.company/gitea/asgardius/s3manager/pulls/8
This commit is contained in:
commit
a0c3cc6dc7
6 changed files with 259 additions and 172 deletions
|
@ -5,7 +5,6 @@ import static android.content.ContentValues.TAG;
|
|||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.DownloadManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
|
@ -17,9 +16,7 @@ import android.provider.MediaStore;
|
|||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.amazonaws.auth.AWSCredentials;
|
||||
|
@ -29,11 +26,7 @@ import com.amazonaws.services.s3.AmazonS3;
|
|||
import com.amazonaws.services.s3.AmazonS3Client;
|
||||
import com.amazonaws.services.s3.S3ClientOptions;
|
||||
import com.amazonaws.services.s3.model.S3Object;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
@ -48,8 +41,12 @@ public class Downloader extends AppCompatActivity {
|
|||
ProgressBar simpleProgressBar;
|
||||
Intent intent;
|
||||
Button fileDownload;
|
||||
Thread downloadFile;
|
||||
Thread downloadFile, downloadProgress;
|
||||
S3Object object;
|
||||
boolean started = false;
|
||||
boolean cancel = false;
|
||||
long filesize = 0;
|
||||
long transfered = 0;
|
||||
private WifiManager.WifiLock mWifiLock;
|
||||
private PowerManager.WakeLock mWakeLock;
|
||||
private PowerManager powerManager;
|
||||
|
@ -85,77 +82,113 @@ public class Downloader extends AppCompatActivity {
|
|||
@Override
|
||||
public void onClick(View view) {
|
||||
//buttonaction
|
||||
simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
fileDownload.setEnabled(false);
|
||||
fileDownload.setText(getResources().getString(R.string.download_in_progress));
|
||||
//Acquiring WakeLock and WifiLock if not held
|
||||
if (!mWifiLock.isHeld()) {
|
||||
mWifiLock.acquire();
|
||||
//System.out.println("WifiLock acquired");
|
||||
}
|
||||
if (!mWakeLock.isHeld()) {
|
||||
mWakeLock.acquire();
|
||||
//System.out.println("WakeLock acquired");
|
||||
}
|
||||
downloadFile = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
try {
|
||||
//Your code goes here
|
||||
//s3client.createBucket(bucket, location);
|
||||
//System.out.println(fkey);
|
||||
object = s3client.getObject(bucket, prefix+filename);
|
||||
writeContentToFile(fileuri);
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//simpleProgressBar.setProgress(100);
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
fileDownload.setText(getResources().getString(R.string.download_success));
|
||||
Toast.makeText(getApplicationContext(),getResources().getString(R.string.download_success), Toast.LENGTH_SHORT).show();
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
//System.out.println("tree "+treelevel);
|
||||
//System.out.println("prefix "+prefix);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
fileDownload.setText(getResources().getString(R.string.download_failed));
|
||||
Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
if (started) {
|
||||
cancel = true;
|
||||
downloadFile.interrupt();
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
started = true;
|
||||
simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
//fileDownload.setEnabled(false);
|
||||
fileDownload.setText(getResources().getString(R.string.cancel_download));
|
||||
//Acquiring WakeLock and WifiLock if not held
|
||||
if (!mWifiLock.isHeld()) {
|
||||
mWifiLock.acquire();
|
||||
//System.out.println("WifiLock acquired");
|
||||
}
|
||||
});
|
||||
downloadFile.start();
|
||||
if (!mWakeLock.isHeld()) {
|
||||
mWakeLock.acquire();
|
||||
//System.out.println("WakeLock acquired");
|
||||
}
|
||||
downloadFile = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
try {
|
||||
//Your code goes here
|
||||
//s3client.createBucket(bucket, location);
|
||||
//System.out.println(fkey);
|
||||
object = s3client.getObject(bucket, prefix+filename);
|
||||
filesize = (object.getObjectMetadata().getContentLength())/1024;
|
||||
writeContentToFile(fileuri);
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//simpleProgressBar.setProgress(100);
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
simpleProgressBar.setProgress(100);
|
||||
fileDownload.setText(getResources().getString(R.string.download_success));
|
||||
fileDownload.setEnabled(false);
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
//System.out.println("tree "+treelevel);
|
||||
//System.out.println("prefix "+prefix);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
if (cancel) {
|
||||
fileDownload.setText(getResources().getString(R.string.download_canceled));
|
||||
} else {
|
||||
fileDownload.setText(getResources().getString(R.string.download_failed));
|
||||
}
|
||||
fileDownload.setEnabled(false);
|
||||
}
|
||||
});
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
downloadProgress = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
//Your code goes here
|
||||
while (fileDownload.isEnabled()) {
|
||||
try {
|
||||
if (filesize != 0) {
|
||||
simpleProgressBar.setProgress((int)((transfered*100)/filesize));
|
||||
}
|
||||
Thread.sleep(500);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
downloadFile.start();
|
||||
downloadProgress.start();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -208,6 +241,7 @@ public class Downloader extends AppCompatActivity {
|
|||
byte[] buffer = new byte[1024];
|
||||
for (int len; (len = in.read(buffer)) != -1; ) {
|
||||
out.write(buffer, 0, len);
|
||||
transfered ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ import android.net.Uri;
|
|||
import android.net.wifi.WifiManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.os.storage.StorageManager;
|
||||
import android.provider.MediaStore;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
@ -58,7 +57,9 @@ public class Uploader extends AppCompatActivity {
|
|||
File ufile;
|
||||
Intent intent;
|
||||
Button fileUpload;
|
||||
Thread uploadFile;
|
||||
Thread uploadFile, uploadProgress;
|
||||
boolean started = false;
|
||||
long transfered = 0;
|
||||
private static final long MAX_SINGLE_PART_UPLOAD_BYTES = 5 * 1024 * 1024;
|
||||
private WifiManager.WifiLock mWifiLock;
|
||||
private PowerManager.WakeLock mWakeLock;
|
||||
|
@ -97,93 +98,139 @@ public class Uploader extends AppCompatActivity {
|
|||
@Override
|
||||
public void onClick(View view) {
|
||||
//buttonaction
|
||||
if (fileuri == null && folder == null) {
|
||||
Toast.makeText(Uploader.this, getResources().getString(R.string.no_file_selected), Toast.LENGTH_SHORT).show();
|
||||
if (started) {
|
||||
started = false;
|
||||
uploadFile.interrupt();
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
//Acquiring WakeLock and WifiLock if not held
|
||||
if (!mWifiLock.isHeld()) {
|
||||
mWifiLock.acquire();
|
||||
//System.out.println("WifiLock acquired");
|
||||
}
|
||||
if (!mWakeLock.isHeld()) {
|
||||
mWakeLock.acquire();
|
||||
//System.out.println("WakeLock acquired");
|
||||
}
|
||||
started = true;
|
||||
transfered = 0;
|
||||
//simpleProgressBar.setProgress(0);
|
||||
simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
fileUpload.setEnabled(false);
|
||||
fileUpload.setText(getResources().getString(R.string.upload_in_progress));
|
||||
uploadFile = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (fprefix.getText().toString().endsWith("/") || fprefix.getText().toString().equals("")) {
|
||||
fkey = fprefix.getText().toString()+getDisplayName(fileuri);
|
||||
} else {
|
||||
fkey = fprefix.getText().toString()+"/"+getDisplayName(fileuri);
|
||||
}
|
||||
//System.out.println(fkey);
|
||||
progress = 0;
|
||||
filesize = 0;
|
||||
try {
|
||||
//Your code goes here
|
||||
//s3client.createBucket(bucket, location);
|
||||
//System.out.println(fkey);
|
||||
ufile = readContentToFile(fileuri);
|
||||
filesize = ufile.length();
|
||||
//PutObjectRequest request = new PutObjectRequest(bucket, fkey, ufile);
|
||||
//upload = s3client.putObject(request);
|
||||
putS3Object(bucket, fkey, ufile);
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
//simpleProgressBar.setProgress(100);
|
||||
simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
fileUpload.setText(getResources().getString(R.string.upload_success));
|
||||
Toast.makeText(getApplicationContext(),getResources().getString(R.string.upload_success), Toast.LENGTH_SHORT).show();
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
//System.out.println("tree "+treelevel);
|
||||
//System.out.println("prefix "+prefix);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
fileUpload.setEnabled(true);
|
||||
fileUpload.setText(getResources().getString(R.string.retry));
|
||||
Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
if (fileuri == null && folder == null) {
|
||||
Toast.makeText(Uploader.this, getResources().getString(R.string.no_file_selected), Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
//Acquiring WakeLock and WifiLock if not held
|
||||
if (!mWifiLock.isHeld()) {
|
||||
mWifiLock.acquire();
|
||||
//System.out.println("WifiLock acquired");
|
||||
}
|
||||
});
|
||||
//simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
uploadFile.start();
|
||||
if (!mWakeLock.isHeld()) {
|
||||
mWakeLock.acquire();
|
||||
//System.out.println("WakeLock acquired");
|
||||
}
|
||||
//eUpload.setEnabled(false);
|
||||
fileUpload.setText(getResources().getString(R.string.cancel_upload));
|
||||
uploadFile = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (fprefix.getText().toString().endsWith("/") || fprefix.getText().toString().equals("")) {
|
||||
fkey = fprefix.getText().toString()+getDisplayName(fileuri);
|
||||
} else {
|
||||
fkey = fprefix.getText().toString()+"/"+getDisplayName(fileuri);
|
||||
}
|
||||
//System.out.println(fkey);
|
||||
progress = 0;
|
||||
filesize = 0;
|
||||
try {
|
||||
//Your code goes here
|
||||
//s3client.createBucket(bucket, location);
|
||||
//System.out.println(fkey);
|
||||
ufile = readContentToFile(fileuri);
|
||||
filesize = ufile.length();
|
||||
//PutObjectRequest request = new PutObjectRequest(bucket, fkey, ufile);
|
||||
//upload = s3client.putObject(request);
|
||||
putS3Object(bucket, fkey, ufile);
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
simpleProgressBar.setProgress(100);
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
fileUpload.setText(getResources().getString(R.string.upload_success));
|
||||
started = false;
|
||||
fileUpload.setEnabled(false);
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.upload_success), Toast.LENGTH_SHORT).show();
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
//System.out.println("tree "+treelevel);
|
||||
//System.out.println("prefix "+prefix);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
//Releasing WifiLock and WakeLock if held
|
||||
if (mWifiLock.isHeld()) {
|
||||
mWifiLock.release();
|
||||
//System.out.println("WifiLock released");
|
||||
}
|
||||
if (mWakeLock.isHeld()) {
|
||||
mWakeLock.release();
|
||||
//System.out.println("WakeLock released");
|
||||
}
|
||||
started = false;
|
||||
//simpleProgressBar.setVisibility(View.INVISIBLE);
|
||||
//fileUpload.setEnabled(true);
|
||||
fileUpload.setText(getResources().getString(R.string.retry));
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
uploadProgress = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
//Your code goes here
|
||||
while (started) {
|
||||
try {
|
||||
if (filesize != 0) {
|
||||
//simpleProgressBar.setProgress((int)((transfered*100)/filesize));
|
||||
simpleProgressBar.setProgress((int)((transfered*100)/filesize));
|
||||
}
|
||||
Thread.sleep(500);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//simpleProgressBar.setProgress(100);
|
||||
}
|
||||
});
|
||||
//System.out.println("tree "+treelevel);
|
||||
//System.out.println("prefix "+prefix);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
|
||||
//finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
//simpleProgressBar.setVisibility(View.VISIBLE);
|
||||
uploadFile.start();
|
||||
uploadProgress.start();
|
||||
/*while (progress <= 99) {
|
||||
System.out.println("Upload in progress");
|
||||
if (upload != null) {
|
||||
|
@ -200,6 +247,7 @@ public class Uploader extends AppCompatActivity {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -319,6 +367,7 @@ public class Uploader extends AppCompatActivity {
|
|||
partETags.add(uploadResult.getPartETag());
|
||||
|
||||
fileOffset += partSize;
|
||||
transfered = fileOffset;
|
||||
}
|
||||
|
||||
// Complete the multipart upload.
|
||||
|
|
|
@ -28,12 +28,13 @@
|
|||
|
||||
<ProgressBar
|
||||
android:id="@+id/simpleProgressBar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:indeterminate="true"
|
||||
android:indeterminate="false"
|
||||
android:max="100"
|
||||
android:padding="20dp"
|
||||
android:progress="50"
|
||||
android:progress="0"
|
||||
android:visibility="invisible"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
|
|
|
@ -46,12 +46,13 @@
|
|||
|
||||
<ProgressBar
|
||||
android:id="@+id/simpleProgressBar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:indeterminate="true"
|
||||
android:indeterminate="false"
|
||||
android:max="100"
|
||||
android:padding="20dp"
|
||||
android:progress="50"
|
||||
android:progress="0"
|
||||
android:visibility="invisible"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<string name="bucket_name_empty">Se requiere un nombre para el bucket</string>
|
||||
<string name="file_share">Compartir archivo</string>
|
||||
<string name="download_file">Descargar archivo</string>
|
||||
<string name="download_in_progress">Descarga en proceso</string>
|
||||
<string name="cancel_download">Cancelar descarga</string>
|
||||
<string name="download_success">Archivo descargado exitosamente</string>
|
||||
<string name="upload_file_tobucket">Subir archivo en este bucket</string>
|
||||
<string name="upload_folder_tobucket">Subir carpeta en este bucket</string>
|
||||
|
@ -21,7 +21,7 @@
|
|||
<string name="upload_prefix">Prefijo del objeto</string>
|
||||
<string name="no_file_selected">Favor de seleccionar un archivo</string>
|
||||
<string name="upload_success">Archivo subido exitosamente</string>
|
||||
<string name="upload_in_progress">Subida en proceso</string>
|
||||
<string name="cancel_upload">Cancelar subida</string>
|
||||
<string name="retry">Reintentar</string>
|
||||
<string name="download_failed">Descarga fallida</string>
|
||||
<string name="success">Éxito</string>
|
||||
|
@ -84,4 +84,5 @@
|
|||
<string name="bucket_size">Tamaño del bucket</string>
|
||||
<string name="file_count">Archivos</string>
|
||||
<string name="null_expiration_date">Debe establecer una fecha de expiración para compartir archivos</string>
|
||||
<string name="download_canceled">Descarga cancelada</string>
|
||||
</resources>
|
|
@ -27,7 +27,7 @@
|
|||
<string name="file_share">Share file</string>
|
||||
<string name="file_external">Open in</string>
|
||||
<string name="download_file">Download file</string>
|
||||
<string name="download_in_progress">Download in progress</string>
|
||||
<string name="cancel_download">Cancel download</string>
|
||||
<string name="download_success">File downloaded successfully</string>
|
||||
<string name="upload_file_tobucket">Upload file to this bucket</string>
|
||||
<string name="upload_folder_tobucket">Upload folder to this bucket</string>
|
||||
|
@ -37,9 +37,10 @@
|
|||
<string name="upload_prefix">Object prefix</string>
|
||||
<string name="no_file_selected">Please select a file</string>
|
||||
<string name="upload_success">File uploaded successfully</string>
|
||||
<string name="upload_in_progress">Upload in progress</string>
|
||||
<string name="cancel_upload">Cancel Upload</string>
|
||||
<string name="retry">Retry</string>
|
||||
<string name="download_failed">Download failed</string>
|
||||
<string name="download_canceled">Download canceled</string>
|
||||
<string name="success">Success</string>
|
||||
<string name="object_info">Properties</string>
|
||||
<string name="file_size">File Size</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue