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

Forum Discussion

DavidM27's avatar
DavidM27
Explorer | Level 4
6 years ago
Solved

Uploading multiple files with UploadSession with TypeScript

Hi,

I'm facing an issue with the UploadSessionFinishBatch method with TypeScript.

I'm having this error :

Error in call to API function \"files/upload_session/finish_batch\": request body: entries: unknown field 'contents

It seems like the "contents" parameter is not supposed to be here and makes the call crash. But in TypeScript the contents is required.

In some example I found on the web I've never seen the contents parameter. Is it a problem of type due to TypeScript SDK ? Or there is something I miss ?

Here is the code I use

const finishUploadBatchArg: DropboxTypes.files.UploadSessionFinishBatchArg = {
      entries: [],
    }

// For each file I do : 
const response = await this.dropBox.filesUploadSessionStart(uploadSessionStartArg)
        sessionId = response.session_id
        const cursor: DropboxTypes.files.UploadSessionCursor = {
          contents: file,
          offset:file.size,
          session_id: sessionId,
        }
        const commitInfo: DropboxTypes.files.CommitInfo = {
          contents: file,
          path: filePath,
          autorename: true,
        }

        const finishSessionArg = {
          contents : file, //This one is unknown from what I understand of the error I get
          cursor: cursor,
          commit: commitInfo,
        }
        finishUploadBatchArg.entries.push(finishSessionArg)
//Then I call the finish batch method : 
const response: DropboxTypes.files.UploadSessionFinishBatchLaunch = await this.dropBox.filesUploadSessionFinishBatch(finishUploadBatchArg)

By the way all the session start goes well.

Can you please help me on this ?

 

  • Thanks for writing this up! This does seem to be a bug in the SDK. The UploadSessionFinishArg type has a 'contents' field because it's how you supply the data if/when calling filesUploadSessionFinish (not the batch version), where it gets set as the request body, but it's not actually needed or expected for filesUploadSessionFinishBatch. I'll ask the team to fix this up.

    Similarly, in this case you should just be setting the file data on UploadSessionStartArg itself, not UploadSessionCursor or CommitInfo. Those definitions are also wrong, so I'll ask the team to fix that too.

    As a workaround though, it looks like you can do the following after defining each of these:

    delete cursor.contents
    delete commitInfo.contents
    delete finishSessionArg.contents

     

     

4 Replies

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

    Thanks for writing this up! This does seem to be a bug in the SDK. The UploadSessionFinishArg type has a 'contents' field because it's how you supply the data if/when calling filesUploadSessionFinish (not the batch version), where it gets set as the request body, but it's not actually needed or expected for filesUploadSessionFinishBatch. I'll ask the team to fix this up.

    Similarly, in this case you should just be setting the file data on UploadSessionStartArg itself, not UploadSessionCursor or CommitInfo. Those definitions are also wrong, so I'll ask the team to fix that too.

    As a workaround though, it looks like you can do the following after defining each of these:

    delete cursor.contents
    delete commitInfo.contents
    delete finishSessionArg.contents

     

     

  • DavidM27's avatar
    DavidM27
    Explorer | Level 4
    6 years ago

    Thank you, for your reply it does work as a workaround. Can you please keep me informed when this is fixed ?

     

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

    Yes, I'll follow up here once I have an update on this. I can't promise when that will be though.

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

    The team has updated the SDK to no longer set 'contents' as required in the latest JavaScript SDK version, v9.7.0, so you should be able to use this as expected without the workaround now.

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!