diff options
Diffstat (limited to 'examples/rails_app-2.3.4/app/controllers/files_controller.rb')
-rw-r--r-- | examples/rails_app-2.3.4/app/controllers/files_controller.rb | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/examples/rails_app-2.3.4/app/controllers/files_controller.rb b/examples/rails_app-2.3.4/app/controllers/files_controller.rb index 6509a71..004c13e 100644 --- a/examples/rails_app-2.3.4/app/controllers/files_controller.rb +++ b/examples/rails_app-2.3.4/app/controllers/files_controller.rb @@ -1,21 +1,26 @@ require 'digest/sha1' class FilesController < ApplicationController - defined?($upr) or before_filter do - # grab the backend in case we forget to set it (or if we're using DRb) - defined?($upr) or ObjectSpace.each_object(Upr::InputWrapper) do |x| - $upr ||= x.backend + # used by streaming upload progress + def new + if request.post? + size, hexdigest = _read_sha1_size + msg = "Successfully upload file (size: #{size}, sha1: #{hexdigest})" + flash[:notice] = msg + redirect_to "/files/new" end end def index end + # used by mup-compatible upload progress def status tmp = $upr.read(params[:upload_id]).inspect render :text => "#{Rack::Utils.escape_html(tmp)}\n" end + # used by mup-compatible upload progress def progress render :update do |page| status = $upr.read(params[:upload_id]) and @@ -23,19 +28,27 @@ class FilesController < ApplicationController end end + # used by mup-compatible upload progress def upload - file = params[:data] + size, hexdigest = _read_sha1_size + render :text => "sha1: #{hexdigest}<br />" \ + "size: #{size}<br />" \ + '<script type="text/javascript">' \ + 'window.parent.UploadProgress.finish();</script>' + end + +private + + def _read_sha1_size + file = params[:data] or return [ -1, :unknown ] + File.unlink(file.path) if file.respond_to?(:path) digest = Digest::SHA1.new if buf = file.read(16384) begin digest.update(buf) end while file.read(16384, buf) end - size = file.stat.size - File.unlink(file.path) - render :text => "sha1: #{digest.hexdigest}<br />" \ - "size: #{size}<br />" \ - '<script type="text/javascript">' \ - 'window.parent.UploadProgress.finish();</script>' + [ file.size, digest.hexdigest ] end + end |