Kemal 0.18.0 is here Kemal gets better yet becoming simpler
Simpler File Upload
File uploads can now be accessed from request
It has 5 useful methods to get the job done!
tmpfile: This is the temporary file for file upload. Useful for saving or manipulating the upload file.
tmpfile_path: File path of
filename: File name of the file upload. (
meta: Meta information for the file upload.
headers: Request headers for the file upload.
Here’s a fully working sample for reading an image file upload with key
image1 and saving it under
post "/upload" do |env| file = env.params.files["image1"].tmpfile file_path = ::File.join [Kemal.config.public_folder, "uploads/", file.filename] File.open(file_path, "w") do |f| IO.copy(file, f) end "Upload ok" end
You can test this with below
curl -F "image1=@/Users/serdar/Downloads/kemal.png" http://localhost:3000/upload
Streaming is a serious business and Kemal has you covered This release adds RFC7233 support.
What this practically means is that you can partially request a file from Kemal without downloading the rest by utilizing HTTP Range header. Ain’t that cool
Be sure to check out the full CHANGELOG for the full awesomeness and bug fixes :) And a big THANKS to everyone for making this release possible