List of file upload

Hey there,

I am trying to upload a list of files from postman to my api, according to the postman console I am indeed sending a list of files in my request:

documents: [2]

but when it arrives in my params I only see one item and it is not even in a list:

"documents" => %Plug.Upload{
    content_type: "image/jpeg",
    filename: "batman_v_superman_dawn_of_justice-1.jpg",
    path: "/tmp/plug-1587/multipart-1587020491-480959249329018-1"
  }

Is there something specific that needs to be done in order to have a list of files accepted?

Thanks!

I know this isn’t extremely helpful but I would also try with curl. It’s my benchmark if I’m calling an API correctly.

2 Likes

ok seems to be postman issue you need to add

at the end of the name of your field for every field you want in the list

I’m not sure if postman is to blame. There’s no spec around how query/body parameters need to be named, therefore it’s up to the receiver to decide how certain names/values are resolved to native data.

2 Likes

Yep, and different libraries do this differently, but it is a fairly common convention (again, not rule) to name parameters that can take multiple values as param_name[]. Rails is doing this, for example. The reason for having such a convention is that it makes it possible for the library or framework to distinguish between a single value and a list of one element:

"param_name=value" => {param_name: value}
"param_name[]=value" => {param_name: [value]}

In Elixir, this is often not needed, as we have keyword lists to express a key/value construct that can take multiple values for a key.