cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox 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: 

Cannot upload Image file with Dropbox API in C# - uploading corrupt image instead

Cannot upload Image file with Dropbox API in C# - uploading corrupt image instead

jimkirk
Explorer | Level 3
Go to solution

Hello.

I am trying to upload an image file into my dropbox account with the dropbox api. The image is being uploaded using this code, but it's a corrupt image.

Here is my code:

 

        public async Task UploadToDropbox()
        {
            using (var dbx = new DropboxClient(dbToken))
            {
                string srcFilePath = @"~\useruploads\";
                string srcFileName = "image1.png";
                string srcFile = srcFilePath + srcFileName;
                string targetFolder = "/uploads";
                string targetFileName = "userupload_" + DateTime.Now.ToString("yymmssfff") + ".png";
                                
                
                //byte[] readContent = Encoding.UTF8.GetBytes(srcFile); //uploading corrupt file
                //byte[] readContent = UTF8Encoding.UTF8.GetBytes(srcFile); //uploading corrupt file
                //var readContent = System.IO.File.ReadAllBytes(srcFile); //uploading nothing
                //byte[] readContent = System.IO.File.ReadAllBytes(srcFile); //uploading nothing

using (var mem = new MemoryStream(readContent)) { var updated = await dbx.Files.UploadAsync( targetFolder + "/" + targetFileName, WriteMode.Overwrite.Instance, body: mem); } } }

Thank you for any help.

1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

If you want to upload a local file, you can just do something like this:

using (var file = new FileStream(srcFile, FileMode.Open))
{
    var updated = await dbx.Files.UploadAsync(
        targetFolder + "/" + targetFileName,
        WriteMode.Overwrite.Instance,
        body: file);
}

You'll probably want to add some checking/exception handling to make sure the local file actually exists at that path though.

View solution in original post

2 Replies 2

Greg-DB
Dropbox Staff
Go to solution

If you want to upload a local file, you can just do something like this:

using (var file = new FileStream(srcFile, FileMode.Open))
{
    var updated = await dbx.Files.UploadAsync(
        targetFolder + "/" + targetFileName,
        WriteMode.Overwrite.Instance,
        body: file);
}

You'll probably want to add some checking/exception handling to make sure the local file actually exists at that path though.

jimkirk
Explorer | Level 3
Go to solution

Unfortunately, with that change, the program isn't going into the using bracket. I tried it out with a try/finally and it seems to just go back to the main method after the "var file = new FileStream(srcFile, FileMode.Open)" line. Any idea why that's happening?

Edit: This was happening because the route was incorrect - your reply worked, thank you!

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    jimkirk Explorer | Level 3
  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?