Need to see if your shared folder is taking up space on your dropbox 👨‍💻? Find out how to check here.

Forum Discussion

jimkirk's avatar
jimkirk
Explorer | Level 3
7 years ago
Solved

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

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.

  • 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.

2 Replies

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    7 years ago

    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's avatar
    jimkirk
    Explorer | Level 3
    7 years ago

    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!

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.

The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.

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, Facebook or Instagram.

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!