Discuss Dropbox Developer & API
Hi everyone,
I've a question:
I need to move files and folders using dropbox API in my Java project. Do you have some code examples? I can't find them online and I don't know if it's possibile do that.
Thank you!
Hi @Здравко
that's my method for folders, but it doesn't work (to and from path are both id:etcetc):
public static void moveFolder(SuiteConfiguration suiteConfiguration,
String fromPath,String toPath) throws RelocationErrorException, DbxException, InterruptedException {
DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);
List<RelocationPath> entries = new ArrayList<RelocationPath>();
entries.add(new RelocationPath(fromPath, toPath));
RelocationBatchV2Launch moveBatchJob = dropboxClient.files().moveBatchV2(entries);
RelocationBatchV2JobStatus moveBatchCheck = null;
while (moveBatchCheck == null || moveBatchCheck.isInProgress()) {
// check this occasionally until it's done
moveBatchCheck = dropboxClient.files().moveBatchCheckV2(moveBatchJob.getAsyncJobIdValue());
Thread.sleep(10000);
System.out.println(moveBatchCheck);
}
//MoveV2Builder withAllowSharedFolder = dropboxClient.files().moveV2Builder("id:TMSaeghsn0AAAAAAAACV2Q/ios.png", "id:TMSaeghsn0AAAAAAAACV2w/ios.png").withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(true);
//RelocationResult result = withAllowSharedFolder.start();
// RelocationResult result = dropboxClient.files().moveV2(fromPath, toPath);
// return result.getMetadata().getPathDisplay();
}
Thank you!
@developersSave wrote:...
that's my method for folders, but it doesn't work (to and from path are both id:etcetc):
...
@Здравкоwrote:... 'id' can be use as path in all cases where existing object is expected to be there. ...
When you have non existing object (the target path), you can combine id and trailing part of the path. For instance if targetId is folder where you want to move your file to and filename.ext is the taget name for the file in that folder, then 'toPath' can look something like $targetId/filename.ext (combining id and path). ...
@developersSave, Read more careful what I have described already. Where you got the target ID from??? First of all there is no such file/folder yet! Next, the ID is the same, only name and/or path changes, so cannot be different source and target IDs. Be more careful!
By the way, it's meaningless a batch operation for single move.
hi @Здравко ,
I get my folders and files id from database, I saved them after upload.
If I need to move a sub-folder under my-app general folder, what have I to do?
Example:
Applications/My-App/folder-1/folder-2
I've to move "folder-2" under "My-App" folder, but I don't have any id for this one.
Thank you!
@developersSave wrote:...
I've to move "folder-2" under "My-App" folder, but I don't have any id for this one.
...
@developersSave, You don't need id for your app namespace root folder. It's just empty. Pass an empty string instead of real ID. 😉 The concatenation can proceed without change.
Hi @Здравко ,
I solved everything in this way (all Paths are made with a DropBox id):
public static String moveFile(SuiteConfiguration suiteConfiguration,
String fromPath,String toPath) throws RelocationErrorException, DbxException {
DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);
"id:TMSaeghsn0AAAAAAAACV2w/ios.png").withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(true);
RelocationResult result = dropboxClient.files().moveV2(fromPath, toPath);
return result.getMetadata().getPathDisplay();
}
public static void moveFolder(SuiteConfiguration suiteConfiguration,
String fromPath,String toPath) throws RelocationErrorException, DbxException, InterruptedException {
DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);
MoveV2Builder withAllowSharedFolder = dropboxClient.files().moveV2Builder(fromPath,toPath).withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(false);
RelocationResult result = withAllowSharedFolder.start();
}
Thank you for your help
Hi there!
If you need more help you can view your support options (expected response time for a ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!