简体   繁体   English

Rails 4 - Paperclip - 使用DATA URI上传图像

[英]Rails 4 - Paperclip - Upload an image using DATA URI

Here my question, I'm using Rails 4 and paperclip to handle image uploading to my amazon s3 server. 在这里,我的问题是,我正在使用Rails 4和paperclip处理图像上传到我的亚马逊s3服务器。 However, I want to allow user to use their own webcam to take a picture instead of selecting an existing file on their hard drive. 但是,我想允许用户使用他们自己的网络摄像头拍照而不是选择硬盘上的现有文件。

When I'm capturing the image, I get as a result an image data URI similar to that : 当我捕获图像时,我得到一个类似于以下的图像数据URI

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAFACAYAAADNkKWqAAAgAElEQVR4nDS7RXNj6bpuW/98xzkRZ8Paa62irMx0ZpptMTOzNMXMzAyWzGnNOW5DdRsOufFJzREPvb/wmkN6KiM9lhCf60gvbaTnJryUkF6LSE8FpLc00nME8SmF+FSEfQppHUF8LMA6i7SqIh36SA8FpHUUHlJIuwLsKkjzBGwCiNsAx6kDFkbEhQFx7EOcCEjrCNIsiDgKwFMZHrJIyzSsikjTKtJ8COs+H/M40tyEtAud3kwrSJsmx2EEaRFCnMVP31vGYGFHWl0ibe6Q9mHEcRpmRaRVDWkRg53A+yzI28ADDwXEWRhxZkRa+GGd5ufQizQLcpwKsC3DqoA0zSKN84jDLNI4wUfPiTR0w9yGNLYhTSOIkwofozzHeYqnoYOPmQ9pKiCOUjAt8d7OIc7CvPQdLMsqNjU1bwMnT10Pm6oPcZTivelkU5bx3FLwWLrlqXzJR+UcsSXnpani0FTzWFXy3DBxqMV46wq8tG3s8gr2RTPHZpxjNcax7ua9YuNQ0PNaM/He9PJUj/DaSPNU8/NStvNY9vBWcfNYMPBU1vBaM/NQMPFYsrNKaThUbOyqHhYFE5OMiklKyaZgZJYysipa2Nf8TJMeNsUA04KCSfYzg8QnVoVbVtkfTEP/YJv+k33uC5vUX8yFL+wKd4ziX5mk/6If/0I/fsM8b2AoKBnGTPQSDkYpFwPBwDStYVvVMcpc0o1c0BcUdGMaBnENVf8Z7fAZy6yKmaBkmpCzTt2zTHxmI1yyS2jZJdy85EJMo1YGUQ0TQcs0amKT9NKLKOgJl7SFc+rCJd2Mi27CRyfpo532U015KCbstNIWWuFresIdPUFLP+6gGbij7PxEP2qi4bAwCUfphRN0Qn46gp5+7IZe/IZeVMks4mPk9TCLuGmH9HSiZto+AwOfm14wRjcUoRH0UA2aybvkDDJmujEDNa+MbkhDx6+kFTDRibioh0yUg3JqYT15j4aqz0TeJSPvPSfv/UoroqQZ0lEPKmlELsn5/pNq4P/QCf0/Wt7f6Xr0dPxmWl4tBfsnMo7fyHjOyDn/Im35nWbknqxXTsFnpBt3UHHe0/Bekrf/k4LzK82AjIr7jGbgG1WfhozbRtLnI2EzUvbekzf9QcH8nZrzmpb7hpL7G0nHn+ScZxRt38kZP1F3fqfsvKDkuCduOCdrOads+0rJ8hcF8xkVxzVp0xkx3Tfylu8UjP9FVv8f5B1XJIwKyk4tWccVUf2/iBn+Tcz0mW7MTMZ8Rkr1n5RU/6BqOCetPiNm+I2g6v8S1/0XKeOvFIx/Ebv8D/KG/yVn/hdJ9T

My question is : how do I upload that image based on that data URI using paperclip in my image controller ? 我的问题是:如何在我的图像控制器中使用paperclip基于该数据URI上传该图像?

Is there a way that I can pass that DATA URI directly to my controller and paperclip will take care of it? 有没有办法可以将DATA URI直接传递给我的控制器,回形针会处理它吗? Or do I have to create and write a temp file to reconstruct the image and then pass it to paperclip? 或者我是否必须创建和编写临时文件来重建图像然后将其传递给回形针?

Thanks a lot!! 非常感谢!!

Paperclip#io_adapters.for will try to find the right adapter for the job, in this case Paperclip::DataUriAdapter . Paperclip#io_adapters.for将尝试为该作业找到合适的适配器,在本例中为Paperclip::DataUriAdapter You could also use Paperclip::DataUriAdapter directly of course. 您当然可以直接使用Paperclip::DataUriAdapter

def save_data_uri_to_attachment(data_uri)    

  # Instantiates Paperclip::DataUriAdapter attachment
  file = Paperclip.io_adapters.for(data_uri)
  file.original_filename = name

  # Save the model  
  model.attachment = file
  model.save!
end

Source: https://stackoverflow.com/a/28036282/545017 资料来源: https//stackoverflow.com/a/28036282/545017

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM