gpt4 book ai didi

javascript - 让 Carrierwave 和 jpegcam 发挥作用?

转载 作者:行者123 更新时间:2023-11-29 20:17:21 24 4
gpt4 key购买 nike

我读了this关于在 rails3 应用程序中使用 Paperclip 从网络摄像头捕捉照片的精彩文章。

我正在尝试将它转换为使用 Carrierwave(我在其他应用程序上使用它,它们都将共享相同的图像,因此我希望保持一致)。

我正在努力解决的问题是如何让 Carrierwave 接受来自 jpegcam 的 Flash 图像捕获文件。 .似乎 Paperclip 更面向文件,而 Carrierwave 更面向对象。

这是我正在尝试的:

我有一个模型,上面安装了载波 uploader :

class Individual < ActiveRecord::Base

mount_uploader :picture, PictureUploader

在 View 中(“编辑” View ):

#webcam
= embed{:id => 'webcam_movie'}... (the embedded flash)...

= submit_tag "Take picture", :onclick => 'webcam.snap();'

= form_for @individual, :html => {:multipart => true} do |f|
= f.text_field :firstname
= f.text_field :lastname
= f.file_field :picture
= f.submit

= content_for :javascripts do
:javascript
function upload_complete(msg) {
if (msg) {
????
} else {
alert('An error occured');
webcam.reset();
}
}
webcam.set_hook('onComplete', 'upload_complete');

我的问题是 Carrierwave 并没有真正的“上传”功能,而是使用模型对象。所以我不太确定要在 Controller 中放入什么才能让它接受文件。以及如何在 javascript 中处理回调。 (我尝试了一些我不好意思在这里重现的事情。将图像对象发送到 Controller ,但无法弄清楚如何处理它)

谁能帮帮我?谢谢。

最佳答案

我最终用一个巨大的 hack 解决了这个问题。

在我的 Controller 中我做了:

def upload
@individual = Individual.find(params[:individual_id])
File.open(upload_path, 'w:ASCII-8BIT') do |f|
f.write request.raw_post
end
@individual.picture = File.open(upload_path)
if @individual.save!
render :text => "ok"
end
end

private

def upload_path # is used in upload and create
file_name = 'temp.jpg'
File.join(::Rails.root.to_s, 'public', 'uploads', file_name)
end

所以我将图像写到一个文件中,然后 carrierwave 读入该文件。(当然 carrierwave 也会制作该文件的临时副本)。

这非常丑陋,可能会冒犯所有 Rails 大神,但它确实有效。

我在 carrierwave list 上询问了我是否可以删除临时文件位并以某种方式将“request.raw_post”读取到 uploader 对象中的问题,但我不清楚是否可以。

关于javascript - 让 Carrierwave 和 jpegcam 发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com