We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.
Forum Discussion
DavidM27
5 years agoExplorer | Level 4
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
- Greg-DBDropbox Staff
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
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,877 PostsLatest Activity: 12 months agoIf 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!