Skip to content

Commit 1db433b

Browse files
committed
Add cleanup methods for file uploads and temporary files
1 parent 4352774 commit 1db433b

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

src/kemal/file_upload.cr

+5
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ module Kemal
2020
@read_time = upload.read_time
2121
@size = upload.size
2222
end
23+
24+
def cleanup
25+
@tempfile.close
26+
::File.delete(@tempfile.path) if ::File.exists?(@tempfile.path)
27+
end
2328
end
2429
end

src/kemal/param_parser.cr

+9
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ module Kemal
2424
@files_parsed = false
2525
end
2626

27+
def cleanup_temporary_files
28+
return if @files.empty? && @all_files.empty?
29+
30+
@files.each_value &.cleanup
31+
@all_files.each_value do |file_uploads|
32+
file_uploads.each &.cleanup
33+
end
34+
end
35+
2736
private def unescape_url_param(value : String)
2837
value.empty? ? value : URI.decode(value)
2938
rescue

src/kemal/route_handler.cr

+3
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ module Kemal
5656
end
5757

5858
context.response.print(content)
59+
5960
context
61+
ensure
62+
context.params.cleanup_temporary_files
6063
end
6164

6265
private def radix_path(method, path)

0 commit comments

Comments
 (0)