We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

Narniaman's avatar
Narniaman
Helpful | Level 6
7 years ago

Path Not Found Error

I'm trying to download a simple file from a Dropbox for a rather large C# program I am developing. 

My file path for the file in the dropbox is:

"C://Users//xxxx//Dropbox (MAD treat)//C#//Sweetners.docx"

 

I've also tried to get this to work by placing the file just in the dropbox: 

"C://Users//xxxx//Dropbox (MAD treat)//Sweetners.docx"

Here's the coding I am using: 

public async Task<bool> Download() {
DBClient = new DropboxClient("zy4WfD_K0CME67Ng6123123123123123123123vCs5ye3LR4FQ5WbbQc7SETCETCETCNotTheRealAuthentication");

 

try {
var localFilePath = @"C:/C# Production";
string folder = "/C#";
string file = "Sweetners.doc";
using(var response = await DBClient.Files.DownloadAsync(folder + "/" + file)) {
using(var fileStream = File.Create(localFilePath)) {
(await response.GetContentAsStreamAsync()).CopyTo(fileStream);
}
}
return true;

}

 

catch(Exception ex) {
MessageBox.Show(ex.ToString());
return false;
}

}

============================

When I step through this, I get a "path not found" error at "await DBClient.Files.DownloadAsync(folder + "/" + file)" request. 

I have tried various combinations of folder and file, including. . . 

folder = "/Dropbox (MAD treat)/C#" and "/C#", "//Dropbox (MAD treat)//C#" and "//C#"

and file = "Sweetner.docx" and "Sweetner.doc", as well as "/Sweetner.docx" and "/Sweetner.doc"

I've also tried just using "/Dropbox (MAD treat)/C#/Sweetners.docx",  "//Dropbox (MAD treat)//C#//Sweetners.docx", and "//Dropbox 

All to no avail! I keep getting the "file path not found" error. 

Is this because DBClient.Files.DownloadAsync doesn't recognize spaces in the "Dropbox (Mad treat)" folder. . . spaces that I can't remove?? 

Thanks in advance!!


 

  • Thanks!

    I finally figured out that the default directory was "\\Apps\\MyAppFolder". . . . and that was the only folder I could read from or write to without going to the "production" mode. Part of the confusion was I was trying to use some subdirectories to the default directory to. 

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff
    When referencing files via path on the Dropbox API, the path will be relative to the root of the Dropbox, not including any local filesystem components from linked computers.

    So, in your case, the right value would be one of these, for whatever the actual file extension is for the uploaded file:
    /C#/Sweetners.docx
    /C#/Sweetners.doc

    The API and .NET SDK can handle special characters, such as spaces and '#'.

    In order to get the right path values though, you can list the contents of a folder using ListFolderAsync:

    https://dropbox.github.io/dropbox-sdk-dotnet/html/M_Dropbox_Api_Files_Routes_FilesUserRoutes_ListFolderAsync_1.htm

    You can supply "" as the path to list the contents of the root folder, or any subfolder such as "/C#". You can then get the resulting 'PathLower' value for the desired file and use that in DownloadAsync.
    • Narniaman's avatar
      Narniaman
      Helpful | Level 6

      I think maybe I've figured out my problem. . . but still don't have a solution for it. 

      When my program runs the command 

      using(var response = await DBClient.Files.DownloadAsync(folder + "/" + file)) {}

      the only way it works is if (folder + "/" + file) is empty -- ie, (String.Empty) works, and should return the "Dropbox Root" directory. However, this returns zero files and zero folders. . . although there are both files and folders. 

      I think this is because my App is not "published" yet, and the only folder I can access in this mode is "/Dropbox/Apps", or in my case "/Dropbox (MAD Treat)/Apps". 

      I would think that "/Apps" should be sufficient to get me to that folder. . but it doesn't. 

      Neither does "//Apps" nor @"/Apps", or for that matter, "\\Apps" nor @"\Apps"

      Once again, thanks for your help. . . .


      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff
        The DownloadAsync method does not support the empty string as the path value. The empty string would refer to root, a folder, but the DownloadAsync method only supports files.

        You may actually be referring to the ListFolderAsync method, which does support the empty string, which is the right way to list the contents of root.

        Note that for apps with the app folder permission though, "root" is interpreted as the root of the special app folder made for the app, which is empty when first created. If it is still empty, you will correctly get an empty list back.

        This is not related to whether or not your app is "published". You also do not need to include the "/Apps" path component yourself.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,877 PostsLatest Activity: 12 months ago
325 Following

If you need more help you can view your support options (expected response time for an email or 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!