Sha256: a19fdf7d523c9210983a44b4f9570fee4d703ba75c7cc27cb20a3bb5faa8ba2b

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

module Kublog
  module XhrUpload
    module FileHelper
    
      protected
    
      # Gets the file received throug Rack Environment
      def received_file
        if env['rack.input']
          make_tempfile(env['rack.input'], :filename => env['HTTP_X_FILE_NAME'], :type => env["CONTENT_TYPE"])
        end
      end
    
      # Taken from rack. Follows the example of maca to create a TempFile
      # via XHR Request. Used to asynchronously upload images
      def make_tempfile(input, options = {})
        tempfile  = Tempfile.new('image-upload')
        tempfile.set_encoding(Encoding::BINARY) if tempfile.respond_to?(:set_encoding)
        tempfile.binmode
        buffer = ""
        while input.read(1024 * 4, buffer)
          entire_buffer_written_out = false
          while !entire_buffer_written_out
            written = tempfile.write(buffer)
            entire_buffer_written_out = written == Rack::Utils.bytesize(buffer)
            if !entire_buffer_written_out
              buffer.slice!(0 .. written - 1)
            end
          end
        end
        tempfile.rewind
        {:tempfile => tempfile}.merge(options)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kublog-0.9.0 lib/kublog/xhr_upload/file_helper.rb
kublog-0.0.1.1 lib/kublog/xhr_upload/file_helper.rb