diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/DropboxV2Storage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/DropboxV2Storage.java index 0ae835b1..2ce9c166 100644 --- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/DropboxV2Storage.java +++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/DropboxV2Storage.java @@ -192,7 +192,30 @@ public class DropboxV2Storage extends JavaFileStorageBase { ByteArrayInputStream bis = new ByteArrayInputStream(data); try { - path = removeProtocol(path); + + //try to get the file id from the path and use that to create the uploadBuilder. This should preserve the case of the path. + String id = null; + + try { + id = getFileEntry(path).userData; + } + catch (Exception e) + { + //ignore. file might not exist yet. + } + + if (id != null && id.length() > 0) + { + path = id; + } + else + { + path = removeProtocol(path); + } + + + + dbxClient.files().uploadBuilder(path).withMode(WriteMode.OVERWRITE).uploadAndFinish(bis); @@ -416,6 +439,7 @@ public class DropboxV2Storage extends JavaFileStorageBase fileEntry.sizeInBytes = fm.getSize(); fileEntry.isDirectory = false; fileEntry.lastModifiedTime = fm.getServerModified().getTime(); + fileEntry.userData = fm.getId(); } else if (e instanceof DeletedMetadata) { @@ -428,6 +452,7 @@ public class DropboxV2Storage extends JavaFileStorageBase fileEntry.path = getProtocolId()+"://"+ e.getPathLower(); fileEntry.displayName = e.getName(); + //Log.d("JFS","fileEntry="+fileEntry); //Log.d("JFS","Ok. Dir="+fileEntry.isDirectory); return fileEntry; diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/JavaFileStorage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/JavaFileStorage.java index 49019bfd..3875fdc1 100644 --- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/JavaFileStorage.java +++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/JavaFileStorage.java @@ -48,6 +48,8 @@ public class FileEntry { public boolean canWrite; public long sizeInBytes; public String displayName; + + public String userData; //can be set by the storage implementation public FileEntry() { diff --git a/src/java/JavaFileStorageTest-AS/app/src/main/java/com/crocoapps/javafilestoragetest/MainActivity.java b/src/java/JavaFileStorageTest-AS/app/src/main/java/com/crocoapps/javafilestoragetest/MainActivity.java index 3fab6709..fcbe46c1 100644 --- a/src/java/JavaFileStorageTest-AS/app/src/main/java/com/crocoapps/javafilestoragetest/MainActivity.java +++ b/src/java/JavaFileStorageTest-AS/app/src/main/java/com/crocoapps/javafilestoragetest/MainActivity.java @@ -557,7 +557,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag } });*/ - storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "3s86datjhkihwyc", !simulateRestart); + storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart); //storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart); //storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);