Skip to content

Uploading multiple files overrides filename #1345

@Cheos137

Description

@Cheos137

Uploading multiple files using the 'not mainly used for backwards compatibility' overrides filename of all FilesUploadV2Request.UploadFile objects passed to com.slack.api.methods.impl.MethodsClientImpl#filesUploadV2 via com.slack.api.methods.request.files.FilesUploadV2Request#uploadFiles.

Reproducible in:

The Slack SDK version

1.1.6 / model 1.40.3

+--- com.slack.api:bolt:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3
|    |    +--- com.slack.api:slack-api-model:1.40.3 (*)
|    \--- com.slack.api:slack-app-backend:1.1.6
|         +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|         +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
+--- com.slack.api:bolt-servlet:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    \--- com.slack.api:bolt:1.1.6 (*)
+--- com.slack.api:bolt-jetty:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    +--- com.slack.api:bolt:1.1.6 (*)
|    +--- com.slack.api:bolt-servlet:1.1.6 (*)
+--- com.slack.api:slack-api-client:1.+ -> 1.40.3 (*)
+--- com.slack.api:bolt:1.1.+ (n)
+--- com.slack.api:bolt-servlet:1.1.+ (n)
+--- com.slack.api:bolt-jetty:1.1.+ (n)
+--- com.slack.api:slack-api-client:1.+ (n)
+--- com.slack.api:bolt:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3
|    |    +--- com.slack.api:slack-api-model:1.40.3 (*)
|    \--- com.slack.api:slack-app-backend:1.1.6
|         +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|         +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
+--- com.slack.api:bolt-servlet:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    \--- com.slack.api:bolt:1.1.6 (*)
+--- com.slack.api:bolt-jetty:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    +--- com.slack.api:bolt:1.1.6 (*)
|    +--- com.slack.api:bolt-servlet:1.1.6 (*)
+--- com.slack.api:slack-api-client:1.+ -> 1.40.3 (*)
+--- com.slack.api:bolt:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3
|    |    +--- com.slack.api:slack-api-model:1.40.3 (*)
|    \--- com.slack.api:slack-app-backend:1.1.6
|         +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|         +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
+--- com.slack.api:bolt-servlet:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    \--- com.slack.api:bolt:1.1.6 (*)
+--- com.slack.api:bolt-jetty:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    +--- com.slack.api:bolt:1.1.6 (*)
|    +--- com.slack.api:bolt-servlet:1.1.6 (*)
+--- com.slack.api:slack-api-client:1.+ -> 1.40.3 (*)
+--- com.slack.api:bolt:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3
|    |    +--- com.slack.api:slack-api-model:1.40.3 (*)
|    \--- com.slack.api:slack-app-backend:1.1.6
|         +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|         +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
+--- com.slack.api:bolt-servlet:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    \--- com.slack.api:bolt:1.1.6 (*)
+--- com.slack.api:bolt-jetty:1.1.+ -> 1.1.6
|    +--- com.slack.api:slack-api-model:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-api-client:1.1.6 -> 1.40.3 (*)
|    +--- com.slack.api:slack-app-backend:1.1.6 (*)
|    +--- com.slack.api:bolt:1.1.6 (*)
|    +--- com.slack.api:bolt-servlet:1.1.6 (*)
+--- com.slack.api:slack-api-client:1.+ -> 1.40.3 (*)

Java Runtime version

(version-independent/this information is irrelevant)

openjdk version "21.0.4" 2024-07-16
OpenJDK Runtime Environment (build 21.0.4+7-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 21.0.4+7-Ubuntu-1ubuntu222.04, mixed mode, sharing)

OS info

(version-independent/this information is irrelevant)

#45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 15 16:40:02 UTC 2

Steps to reproduce:

(Share the commands to run, source code, and project settings (e.g., pom.xml/build.gradle))

  1. attempt uploading any file using the filesUploadV2 method (it doesn't matter if the FilesUploadV2Request#filename field is blank/null or set to any value)
  2. observe the filename of all files being replaced with Uploaded File (if null was passed) or the passed FilesUploadV2Request#filename
  3. you can bypass this issue by uploading one single file at a time, by using the fields commented with (this is mainly for backward compatibility - using uploadFiles instead is recommended)
  4. inspect the source code (com.slack.api.methods.impl.MethodsClientImpl, line 2341) and confirm the error

Expected result:

The filenames don't get overridden

Actual result:

All filenames are replaced with one single value

How to fix:

in com.slack.api.methods.impl.MethodsClientImpl on line 2341, replace the call to req.getFilename() with a call to uploadFile.getFilename() .
This seems to be a simple copy-paste error - though i think it might be useful to check the entire method for additional errors i might've overlooked.

Requirements

Please make sure if this topic is specific to this SDK. For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. 🙇

Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions