如何在Rails4中使用Carrierwave在Blob中保存base64图像?

香脆鸡

本教程中所述,我将画布转换为DataUrl,并将此DataUrl转换为Blob。然后,我发出ajax发布请求,并希望使用Carrierwave将图像保存在数据库中。

这是我的JS代码:

uploadButton.on('click', function(e) {

  var dataURL = mycanvas.toDataURL("image/png;base64;");

  // Get our file
  var file= dataURLtoBlob(dataURL);

  // Create new form data
  var fd = new FormData();

  // Append our Canvas image file to the form data
  fd.append("image", file);

  // And send it
  $.ajax({
    url: "/steps",
    type: "POST",
    data: fd,
    processData: false,
    contentType: false,
  });
});

// Convert dataURL to Blob object
function dataURLtoBlob(dataURL) {

  // Decode the dataURL
  var binary = atob(dataURL.split(',')[1]);

  // Create 8-bit unsigned array
  var array = [];
  for(var i = 0; i < binary.length; i++) {
    array.push(binary.charCodeAt(i));
  }

  // Return our Blob object
  return new Blob([new Uint8Array(array)], {type: 'image/png'});
}

当我将以下代码添加到控制器中时,就会保存图像,但当然不会通过载波。

File.open("#{Rails.root}/public/uploads/somefilename.png", 'wb') do |f|
  f.write(params[:image].read)
end

更新信息:

这些是我的ajax发布请求的参数:

Parameters: {"image"=>#<ActionDispatch::Http::UploadedFile:0x007feac3e9a8a8 @tempfile=#<Tempfile:/var/folders/0k/q3kc7bpx3_51kc_5d2r1gqcc0000gn/T/RackMultipart20140211-1346-gj7kb7>, @original_filename="blob", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"blob\"\r\nContent-Type: image/png\r\n">}

这些是标准文件上传的参数:

Parameters: {"utf8"=>"✓", "image"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007feac20c2e20 @tempfile=#<Tempfile:/var/folders/0k/q3kc7bpx3_51kc_5d2r1gqcc0000gn/T/RackMultipart20140211-1346-1ui8wq1>, @original_filename="burger.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image[image]\"; filename=\"xy.jpg\"\r\nContent-Type: image/jpeg\r\n">}}

如果我Image.create(params[:image])有交易回滚...

事务回滚错误:

Unprocessable Entity
ActiveRecord::RecordInvalid (Validation failed: image You are not allowed to upload "" files, allowed types: jpg, jpeg, gif, png)
品尼

您正在将允许的文件类型列入白名单。默认情况下,Carrierwave会尝试通过文件扩展名来确定文件类型-由于这实际上是Blob对象,因此未通过。因此,您会收到有关文件“类型”的验证错误。要解决此问题,只需为blob对象添加所需的文件名扩展名即可:

if params[:image].try(:original_filename) == 'blob'
  params[:image].original_filename << '.png'
end

Image.create!(image: params[:image])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Ruby on Rails中使用Base64编码?

来自分类Dev

如何在Rails4中使用Capistrano

来自分类Dev

如何在rails4中使用装饰器?

来自分类Dev

使用回形针上传base64图像-Rails 4

来自分类Dev

如何在PHP中使用Base64发布图像?

来自分类Dev

如何在Android Studio中使用BASE64做解压缩图像

来自分类Dev

如何在命令行中使用base64解码图像字符串?

来自分类Dev

如何使用fs读取和保存base64图像

来自分类Dev

如何在MVC 4中使用图像保存模型

来自分类Dev

如何从保存的base64图像中裁剪未使用的画布空间?

来自分类Dev

我如何在form_tag rails4中使用重置按钮

来自分类Dev

如何在反应离子中渲染base64图像?

来自分类Dev

如何在php中锐化base64编码的图像

来自分类Dev

如何在Javascript中显示base64图像

来自分类Dev

如何在asp.net中使用Ajax解密base64图像并将其设置为图像

来自分类Dev

如何在HTML文件中重复使用base64图像

来自分类Dev

如何在HTML文件中重复使用base64图像

来自分类Dev

如何在ionic 4页面中显示存储在postgre db(作为base64)中的图像?

来自分类Dev

html图像blob到base64

来自分类Dev

如何在HTML5 Blob对象上使用base64编码

来自分类Dev

如何/可以在Jasper Report模板中使用base64作为图像源?

来自分类Dev

在VBA中使用Base64将图像插入到工作表中?

来自分类Dev

在Rails中显示base64编码的图像

来自分类Dev

在Rails中将Carrierwave附件编码为base64

来自分类Dev

如何在C中将图像转换为base64?

来自分类Dev

如何在C中将图像转换为base64?

来自分类Dev

在Rails4中使用Devise,如何允许用户仅编辑自己的注释?

来自分类Dev

如何在不保存本地的情况下将 base64 数据传输到可读的图像流中

来自分类Dev

如何在服务器上的base64中上传图像

Related 相关文章

  1. 1

    如何在Ruby on Rails中使用Base64编码?

  2. 2

    如何在Rails4中使用Capistrano

  3. 3

    如何在rails4中使用装饰器?

  4. 4

    使用回形针上传base64图像-Rails 4

  5. 5

    如何在PHP中使用Base64发布图像?

  6. 6

    如何在Android Studio中使用BASE64做解压缩图像

  7. 7

    如何在命令行中使用base64解码图像字符串?

  8. 8

    如何使用fs读取和保存base64图像

  9. 9

    如何在MVC 4中使用图像保存模型

  10. 10

    如何从保存的base64图像中裁剪未使用的画布空间?

  11. 11

    我如何在form_tag rails4中使用重置按钮

  12. 12

    如何在反应离子中渲染base64图像?

  13. 13

    如何在php中锐化base64编码的图像

  14. 14

    如何在Javascript中显示base64图像

  15. 15

    如何在asp.net中使用Ajax解密base64图像并将其设置为图像

  16. 16

    如何在HTML文件中重复使用base64图像

  17. 17

    如何在HTML文件中重复使用base64图像

  18. 18

    如何在ionic 4页面中显示存储在postgre db(作为base64)中的图像?

  19. 19

    html图像blob到base64

  20. 20

    如何在HTML5 Blob对象上使用base64编码

  21. 21

    如何/可以在Jasper Report模板中使用base64作为图像源?

  22. 22

    在VBA中使用Base64将图像插入到工作表中?

  23. 23

    在Rails中显示base64编码的图像

  24. 24

    在Rails中将Carrierwave附件编码为base64

  25. 25

    如何在C中将图像转换为base64?

  26. 26

    如何在C中将图像转换为base64?

  27. 27

    在Rails4中使用Devise,如何允许用户仅编辑自己的注释?

  28. 28

    如何在不保存本地的情况下将 base64 数据传输到可读的图像流中

  29. 29

    如何在服务器上的base64中上传图像

热门标签

归档