попробуйте, добавьте lib / qq_file.rb:
# encoding: utf-8
require 'digest/sha1'
require 'mime/types'
# Usage (paperclip example)
# @asset.data = QqFile.new(params[:qqfile], request)
class QqFile < ::Tempfile
def initialize(filename, request, tmpdir = Dir::tmpdir)
@original_filename = filename
@request = request
super Digest::SHA1.hexdigest(filename), tmpdir
fetch
end
def self.parse(*args)
return args.first unless args.first.is_a?(String)
new(*args)
end
def fetch
self.write @request.raw_post
self.rewind
self
end
def original_filename
@original_filename
end
def content_type
types = MIME::Types.type_for(@request.content_type)
types.empty? ? @request.content_type : types.first.to_s
end
end
в assets_controller, введите это:
def create
@asset ||= Asset.new(params[:asset])
@asset.assetable_type = params[:assetable_type]
@asset.assetable_id = params[:assetable_id] || 0
@asset.guid = params[:guid]
@asset.data = QqFile.parse(params[:qqfile], request)
@asset.user_id = 0
@success = @asset.save
respond_with(@asset) do |format|
format.html { render :text => "{'success':#{@success}}" }
format.xml { render :xml => @asset.to_xml }
format.js { render :text => "{'success':#{@success}}"}
format.json { render :json => {:success => @success} }
end
end
javascript:
var photo_uploader = new qq.FileUploader({
element: document.getElementById('photo-button'),
multiple: true,
action: '/assets',
allowedExtensions: ['png', 'gif', 'jpg', 'jpeg'],
sizeLimit: 2097152,
params: {guid: $('#idea_guid').val(), assetable_type: 'Idea', klass: 'Picture', collection: true}
});