Search code examples
c#asp.netmodel-view-controllerdropbox-api

Dropbox API - UploadAsync Value Should Match


I'm trying to use the Dropbox API in order to do a file upload.

                string accesstoken = "token";
               using (DropboxClient client =
                new DropboxClient(accesstoken, new DropboxClientConfig("NameOfApp")))
            {
                string[] spitInputFileName = file.FileName.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
                string filenameAndExtension = spitInputFileName[spitInputFileName.Length - 1];

                string[] filenameAndExtensionSplit = filenameAndExtension.Split('.');
                string originalFileName = filenameAndExtensionSplit[0];
                string originalExtension = filenameAndExtensionSplit[1];

                String filename = "" + originalFileName + Guid.NewGuid().ToString().Replace("-", "") + "." + originalExtension;

                var updated = client.Files.UploadAsync(

                filename,
                mode: WriteMode.Overwrite.Overwrite.Instance,
                body: file.InputStream).Result;

                var result = client.Sharing.CreateSharedLinkWithSettingsAsync(filename).Result;

Within the body: file.InputStream.Result; section, It encounters below error :

An exception of type 'System.ArgumentOutOfRangeException' occurred in Dropbox.Api.dll but was not handled in user code
Value should match pattern '\A(?:(/(.|[\r\n])*)|(ns:[0-9]+(/.*)?)|(id:.*))\z'

What is the reason of this exception?


Solution

  • Paths should start with '/'. File path should be something like this:

    /test.txt
    

    In your case:

    String filename = "/" + originalFileName + Guid.NewGuid().ToString().Replace("-", "") + "." + originalExtension;