Rya*_*nJM 5 file-upload ruby-on-rails-3 carrierwave
我正在试图弄清楚如何正确设置Carrierwave以便能够处理通过File Uploader发送的文件.
我已经把它贴fileuploader.js和fileuploader.css我的资产管道(轨3.2.0),并具有以下HTML:
<div id="file-uploader">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
<!-- or put a simple form for upload here -->
</noscript>
</div>
Run Code Online (Sandbox Code Playgroud)
和javascript:
$(document).ready(function(){
var uploader = new qq.FileUploader({
// pass the dom node (ex. $(selector)[0] for jQuery users)
element: $('#file-uploader')[0],
// path to server-side upload script
action: '/photos',
debug: true,
params: {
authenticity_token: "<%= form_authenticity_token.to_s %>"
},
onComplete: function(id, fileName, responseJSON){
alert(responseJSON.toString());
}
});
});
Run Code Online (Sandbox Code Playgroud)
当我选择一个文件时,它会启动脚本并调用我的应用程序.这就是我不知道如何处理.
我有一个Photo模型mount_uploader :image, ImageUploader.所以PhotoController我有:
def create
io = AppSpecificStringIO.new(request.raw_post,params[:qqfile])
@photo = Photo.new(:image => io)
if @photo.save
respond_to do |format|
format.js { render :josn => @photo.to_json(:methods => :success, :only => [:id, :image]) }
end
else
respond_to do |format|
format.js { render :josn => {:success=>false} }
end
end
end
Run Code Online (Sandbox Code Playgroud)
param只有qqfile文件名.我发现它request.raw_post有图像的数据.但我不知道它是什么格式(是64Bit还是不是).我一直试图在这个问题上找到我可以找到的任何资源并尝试任何东西.Carrierwave wiki上的一个消息来源建议使用AppSpecificStringIO类.
class AppSpecificStringIO < StringIO
attr_accessor :filepath
def initialize(*args)
super(*args[1..-1])
@filepath = args[0]
end
def original_filename
File.basename(filepath)
end
end
Run Code Online (Sandbox Code Playgroud)
在File Uploader的维基上有一个关于CarrierWave 的建议,但我也无法解决任何问题.CarrierwaveStringIO在我看来并不存在.
我只想获得一个将图像上传到Carrierwave的ajax解决方案.感谢能帮助我的人.
我正在使用rack-raw-upload gem
然后在我的控制器中我正在执行以下操作:
def create
if params[:qqfile]
## IE acts differently
file = params[:qqfile].is_a?(ActionDispatch::Http::UploadedFile) ? params[:qqfile] : params[:file]
@attachment.asset = file
xhr_create
else
super
end
end
def xhr_create
if @attachment.save
render :json => { success: true }
else
render :json => @attachment.errors.to_json
end
end
Run Code Online (Sandbox Code Playgroud)
并在 application.rb 中
config.middleware.use 'Rack::RawUpload', :paths => ['/attachments']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2956 次 |
| 最近记录: |