preserve filename case in Dropbox when uploading files, closes https://github.com/PhilippC/keepass2android/issues/898
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user