cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to know what we learned at IBC? Check out our learnings on media, remote working and more right here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Re: Distinguish between duplicating a file and renaming a file

Distinguish between duplicating a file and renaming a file

SuryaMopuru
Explorer | Level 3
Go to solution

How can i distinguish between rename and duplicate. Currently this is how i am trying to do:

 using (var dbx = new DropboxClient(RefreshToken, Appkey, Appsecret))
{
try
{
var metadata = (await dbx.Files.GetMetadataAsync("/" + backupItem.Path));
if (metadata != null)
{
var remote = "/" + remoteUrl;
var fromPath = "/" + backupItem.Path;
RelocationResult result = await dbx.Files.MoveV2Async(fromPath, remote);
if(result != null)
{
var updated = await dbx.Files.UploadAsync(
"/" + remoteUrl,
mode: WriteMode.Overwrite.Instance,
body: fileStream);
}
}
}
catch
{
var updated = await dbx.Files.UploadAsync(
"/" + remoteUrl,
mode: WriteMode.Overwrite.Instance,
body: fileStream);

 

When i try to rename it is working because moveasync will get invoked but when i try to duplicate the file it is updating the existing file rather than duplicating it. Do we have any way to handle my scenario.

For the first time when user creates any file our GetMetadatAsync will throw an error because in the mentioned path we dont have file so it goes into catch block and upload the new file.

This should happen in duplication also.

1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

I'm not sure I follow. Dropbox provides these API calls/methods for performing whatever operations the third party app (your app) needs to perform, but it's up to the third party app to build and show its UI to the end-user, allow them to perform actions and provide input, and use its logic to determine what calls to make and when. So, for example, the user may indicate in your app that they want to move a file, or make a copy of a file, and the app would use the corresponding method accordingly.

View solution in original post

3 Replies 3

Greg-DB
Dropbox Staff
Go to solution

As in your previous thread, the UploadAsync method is for uploading a file (whether a new file or a new version of an existing file). If you want to rename an existing file you should use MoveV2Async instead. 

 

Additionally, if you want to duplicate, that is, make a copy of, an existing file, you can use CopyV2Async instead. Similar to moving a file, that method takes a fromPath for the existing path (including file name) of the existing file you want to copy, and toPath for the new path (including file name) of where you want the new copy of the file to be put.

SuryaMopuru
Explorer | Level 3
Go to solution
Do we have any way to know that selected file is to duplicate or rename.

Any id or something to know that user has choosen to duplicate the file or to renamw the file

Greg-DB
Dropbox Staff
Go to solution

I'm not sure I follow. Dropbox provides these API calls/methods for performing whatever operations the third party app (your app) needs to perform, but it's up to the third party app to build and show its UI to the end-user, allow them to perform actions and provide input, and use its logic to determine what calls to make and when. So, for example, the user may indicate in your app that they want to move a file, or make a copy of a file, and the app would use the corresponding method accordingly.

Need more support?