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 the the directory location to save uploaded files.
If save_directory is set to nil uploaded files are not save, instead
the entire http request is printed on STDOUT, followed by the name and
contents of each file. Generally only useful for small and non-binary
files.
178 179 180 181 182 |
# File 'lib/oddjob.rb', line 178 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.
229 230 231 232 233 |
# File 'lib/oddjob.rb', line 229 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.
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 224 |
# File 'lib/oddjob.rb', line 188 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 |