Sha256: b8c2c00763bb968423929805715d810f95aa8494e686d45a60950540a49e59ef

Contents?: true

Size: 1.41 KB

Versions: 7

Compression:

Stored size: 1.41 KB

Contents

begin
    require 'ftools'
rescue LoadError
end

module Spider; module Forms
    
    class FileInput < Input
        tag 'file'
        is_attr_accessor :save_path, :type => String, :default => lambda{ Spider.paths[:var]+'/data/uploaded_files' }
        
        def needs_multipart?
            true
        end
        
        def prepare
            raise "No save path defined" unless @save_path
            raise "Save path #{@save_path} is not a directory" unless File.directory?(File.dirname(@save_path))
            FileUtils.mkdir_p(@save_path) unless File.directory?(@save_path)

            super
        end
        
        
        def prepare_value(val)
            return nil if !val || val.empty?
            if val['file'] && !val['file'].is_a?(String)
                dest_path = @save_path+'/'+val['file'].filename
                File.copy(val['file'].path, dest_path)
                return dest_path
            elsif val['clear']
                self.value = nil
                return
            end
            return @value
        end
        
        __.action
        def view_file
            raise NotFound.new(@value.to_s) unless @value && @value.file?
            @response.headers['Content-Description'] = 'File Transfer'
            @response.headers['Content-Disposition'] = "attachment; filename=\"#{@value.basename}\""
            output_static(@value.to_s)
        end
        
    end
    
end; end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spiderfw-0.6.27 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.26 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.26.pre1 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.25 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.24 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.23 apps/core/forms/widgets/inputs/file_input/file_input.rb
spiderfw-0.6.22 apps/core/forms/widgets/inputs/file_input/file_input.rb