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

4
这里是我的问题,我正在使用Rails 4和paperclip来处理将图片上传到Amazon S3服务器的工作。 然而,我想允许用户使用自己的网络摄像头拍照片,而不是选择硬盘上现有的文件。
当我捕捉图像时,我得到的结果是类似于 图像数据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

我的问题是:如何在我的图像控制器中使用paperclip基于数据URI上传该图像?

是否有一种方法可以直接将该DATA URI传递给我的控制器,并由paperclip处理它? 还是我必须创建和编写一个临时文件来重建图像,然后将其传递给paperclip?

非常感谢!!

1个回答

4

Paperclip#io_adapters.for 将会尝试找到适合该任务的适配器,例如在这种情况下使用 Paperclip::DataUriAdapter 。当然,您也可以直接使用 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

来源:https://dev59.com/voXca4cB1Zd3GeqPLqlg#28036282

如果您想在Windows上运行Linux二进制文件,可以使用Wine。 Wine是一个免费的和开源的应用程序,它允许Windows用户在Linux和其他类Unix系统上运行Windows应用程序。 安装Wine后,您可以运行以下命令来运行Linux二进制文件:

wine /path/to/binary_file

请注意,这可能不适用于所有类型的二进制文件,并且有时需要一些配置才能使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接