1

I've been have a issue where I tried to use the RestClient lib to send two or more files to Kotlin Service endpoint where this controller needs to receive a files attributes that is a List<MultipartFile>.

I'm using rest-client (2.0.2), rails (7.0.4.2) and ruby 3.1.2p20

I already try send this requests, but a receive a bad request and in the kotlin service says:

"Required request part 'files' is not present"

 request = @http_client_class.new(
          method: :post,
          url: path,
          payload: { multipart: true, files: files },
          headers: build_header(headers)
        )

I tried this way but the hash in ruby just accept one key per hash, so it just send the second file. And yes I already try to use compare_by_identity method doesn't work

request = @http_client_class.new(
  method: :post,
  url: path,
  payload: {
    :multipart => true,
    :files => files[0],
    :files => files[1]
  },
  headers: build_header(headers)
)

I already tried this but I also receive a bad request and in the kotlin service says "Required request part 'files' is not present"

payload = {
  file1: File.new(file1_path, 'rb'),
  file2: File.new(file2_path, 'rb')
}

And other alternatives that chatgpt, phind and Stack Overflow gave to me.

The curious is when I send one file it works. Request like this

 request = @http_client_class.new(
          method: :post,
          url: path,
          payload: { multipart: true, files: files[0] },
          headers: build_header(headers)
        )

It looks when I have a list the lib RestClient use Utils.flatten_params they change my attributes name from files to files[].

RESOLUTION

I resolved change the lib

Using Net::HTTP::Post::Multipart works.

2
  • how about zip them first ? Commented Dec 8, 2023 at 3:18
  • Its not works because the server is not prepare to receive a zip. Commented Dec 14, 2023 at 13:18

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.