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.