Class: OddJob::FileUpload
- Inherits:
-
WEBrick::HTTPServlet::AbstractServlet
- Object
- WEBrick::HTTPServlet::AbstractServlet
- OddJob::FileUpload
- Includes:
- HtmlRender
- Defined in:
- lib/oddjob.rb
Overview
Webrick servlet for upload pages.
Instance Method Summary collapse
-
#do_GET(request, response) ⇒ Object
Serves a simple file upload form.
-
#do_POST(request, response) ⇒ Object
Handles webrick post request when uploading one or more files via a standard HTML form submission.
-
#initialize(server, delay, save_directory, *options) ⇒ FileUpload
constructor
Standard servlet initialization function with additional arguments.
Methods included from HtmlRender
Constructor Details
#initialize(server, delay, save_directory, *options) ⇒ FileUpload
Standard servlet initialization function with additional arguments.
delay is the seconds of simulated network delay to wait before responding after an upload request.
save_directory is where uploaded files are saved. If save_directory is not set, or set to nil, uploaded files are not saved. Instead the entire http request is printed on STDOUT, followed by the name and contents of each file. Generally only useful for small text files.
177 178 179 180 181 |
# File 'lib/oddjob.rb', line 177 def initialize(server, delay, save_directory, *) @simulated_delay = delay @save_directory = save_directory super(server, ) end |
Instance Method Details
#do_GET(request, response) ⇒ Object
Serves a simple file upload form. Uploads submitted are handled by this class’ do_Post method.
228 229 230 231 232 |
# File 'lib/oddjob.rb', line 228 def do_GET(request, response) response.status = 200 response['Content-type'] = 'text/html' response.body = uploader_page end |
#do_POST(request, response) ⇒ Object
Handles webrick post request when uploading one or more files via a standard HTML form submission. The form should include an input of type ‘file’. See the page produced by the do_GET method for an example form.
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/oddjob.rb', line 187 def do_POST(request, response) if @save_directory.nil? # Request to server STDOUT. puts "-- BEGIN File Upload POST Request --" puts request puts "-- END File Upload POST Request --" end all_uploads = Array.new ['file', 'file[]'].each do |name| if request.query[name] request.query[name].each_data do |data| upload = OpenStruct.new upload.name = data.filename if @save_directory.nil? # File contents to server STDOUT. puts "== BEGIN #{data.filename} Contents ==" puts data.to_s puts "== END #{data.filename} Contents ==" else output_name = unique_name(data.filename, @save_directory) File.open(output_name, "w"){|f| f.print(data.to_s)} puts "#{data.filename} uploaded, saved to #{output_name}" upload.output_name = File.(output_name) end all_uploads.push(upload) end end end response.status = 200 response['Content-type'] = 'text/html' response.body = uploaded_page(all_uploads) sleep(@simulated_delay) end |