如何将base64字符串转换为文件?

2024-05-26

我使用 jquery 插件来裁剪图像。该插件将裁剪图像并将其作为 Base64 编码字符串提供给我。为了将其上传到 S3,我需要将其转换为文件并将该文件传递到上传函数中。我怎样才能做到这一点?我尝试了很多事情,包括使用解码字符串atob。没有一个起作用。

这是裁剪插件('croppie')的代码,它为我提供了编码字符串:

imageCropper.croppie('result', {
    type: 'canvas',
    size: 'viewport',
    format: 'jpeg'
}).then(function (resp) {
  updateAvatar(resp);
});

我将它传递给一个名为的函数updateAvatar。这是 updateAvatar 函数:

updateAvatar({Meteor, Slingshot}, avatar) {
  const uploader = new Slingshot.Upload('userAvatarUpload');

  uploader.send(avatar, function (error, downloadUrl) {
    if (error) {
      // Log service detailed response.
      console.error('Error uploading', uploader.xhr.response);
      console.log(error);
    }
    else {
      console.log('uploaded', downloadUrl);
    }
  });
}

uploader.send 函数需要一个文件或一个 url。它不会接受我的编码字符串。

我用来上传文件到S3的插件:https://github.com/CulturalMe/meteor-slingshot https://github.com/CulturalMe/meteor-slingshot


代码中缺少的“砖块”似乎是一个函数,它将采用 Base64 编码的图像并将其转换为 Blob。

因此,我将专门关注该部分,并为每个步骤提供简短的评论。

以下函数需要一个字符串,例如:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICA...

function base64ImageToBlob(str) {
  // extract content type and base64 payload from original string
  var pos = str.indexOf(';base64,');
  var type = str.substring(5, pos);
  var b64 = str.substr(pos + 8);

  // decode base64
  var imageContent = atob(b64);

  // create an ArrayBuffer and a view (as unsigned 8-bit)
  var buffer = new ArrayBuffer(imageContent.length);
  var view = new Uint8Array(buffer);

  // fill the view, using the decoded base64
  for(var n = 0; n < imageContent.length; n++) {
    view[n] = imageContent.charCodeAt(n);
  }

  // convert ArrayBuffer to Blob
  var blob = new Blob([buffer], { type: type });

  return blob;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将base64字符串转换为文件? 的相关文章

随机推荐

  • 使用其他非依赖构造函数参数进行构造函数注入

    我是 IOC 容器的新手 我正在开始使用 NInject 如果您希望您的构造函数具有非服务且不需要由 IOC 容器实例化的参数 您该怎么办 例如 public class Person private readonly string nam
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • java.lang.ClassCastException:类 org.springframework.web.servlet.DispatcherServlet 无法转换为类 jakarta.servlet.Servlet

    我已经看到了与我类似的问题的答案 但我已经尝试了一切 错误并没有消失 据我所知 api servlet 类是由两个不同的类加载器加载的 因为 Web 部署程序集中有多个源 我尝试使用 servlet api 3 0 alpha 1 jar
  • 为什么 import numpy 不会自动包含 matlib

    我正在尝试使用水平重复 numpy array xa numpy matlib repmat x 1 3 但是 直接输入此内容会导致错误 我必须添加import numpy matlib为了a numpy matlib repmat x 1
  • “@required”注释作为错误而不是警告

    现在在我的 Flutter 项目中 当我用注释构造函数参数时 required当实例化构造函数时忘记它 我从 IDE 收到一条轻微警告 表明该参数是必需的 我希望这在 IDE 中显示为实际错误 有办法进去吗analysis options
  • 根据不同的列数据范围隐藏行

    我对使用 VBA 相当陌生 我正在尝试创建一个代码 该代码将查看具有不同数据范围的两个不同列 并隐藏最后一个数据点之外的行 引用两列 目前我有这个 Private Sub Worksheet PivotTableUpdate ByVal T
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 以小并发批量运行 Promise(一次不超过 X)

    Async 库具有类似的功能每个限制 https github com caolan async eachLimit它可用于将大量作业有效地分布在多个 CPU 核心上 如下所示 var numCPUs require os cpus len
  • Jlist 自定义渲染器

    我正在尝试添加一个我猜你会称其为列表中每个项目的子列表 我构建了一个自定义渲染器 它提供以下输出 正如你所看到的 有些东西不对劲 我没能找到问题的答案 我猜我需要更改面板布局中的某些内容才能获得正确的结果 但不知道是什么 https i s
  • MySql - 自动完成

    我正在创建一个 Ajax 自动完成应用程序 并且想知道是否有一个 SQL 查询可以用于此目的 例如 如果有人键入 p 我想检索所有以 p 开头的单词 如果他们添加 e 检索所有以 pe 开头的单词 并继续这样 有人提出了下面的查询 但我认为
  • 如何识别与给定地理围栏重叠的六边形?

    H3 API参考介绍polyfill 其思想是 在给定地理围栏周围定义的 k 环中的每个六边形上进行点多边形操作 问题是 我不明白 围绕地理围栏定义的 k 环 是什么意思 这是一个 环 它的中心实际上是整个地理围栏吗 如果根据六边形的中心位
  • 嵌套循环中的索引

    我是 R 和这个网站的新手 我的目标是创建一个 R 函数 在 ggplot2 中生成特殊类型的箱线图 这肯定是不必要的晦涩难懂的代码 我首先需要通过计算稍后希望绘制的变量来处理其中的潜在输入 我首先生成一些随机数据 称为datos c1 r
  • 如果“pip install”有效,为什么还要“sudo pip install”? (HelloAnalytics.py 的问题)

    Google 提供了一个示例 HelloAnalytics py 来演示如何使用谷歌 API python 客户端 https pypi org project google api python client 标题下方 2 安装客户端库
  • 如何实现 Android 浮动 SearchWidget

    I am trying to implement the search widget in the current android apps but just can t get it done and I ve not been able
  • ServiceStack 身份验证中 httponly ss-tok bearerToken cookie 的意义是什么

    我从安全角度理解 Set Cookie 响应标头值的 httponly 标志的概念并防止 XSS 攻击 我不明白的是 ServiceStack 对保存 bearerToken 的 ss tok cookie 做了什么 根据服务堆栈文档 ht
  • 单笔交易与多笔交易[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • iOS5 故事板错误:故事板在 iOS 4.3 及更早版本上不可用

    我使用故事板构建了一个小型应用程序 并且运行得很好 就在最终测试之前 我决定尝试一下它是否可以在 iOS 4 3 上运行 我点击项目设置中灰色的5 0 选择4 3 该应用程序无法构建 并显示以下错误消息 故事板在 iOS 4 3 及更早版本
  • 将 ffmpeg 编译为独立二进制文件

    我正在尝试编译ffmpeg作为独立的二进制文件 因为我想在 AWS lambda 中使用它 我可以让事情在我正在编译的服务器上正常工作 但是如果我复制二进制文件并从另一台服务器运行它 我会得到 ffmpeg error while load
  • 如何从 google place api for python 中的地点 id 获取地点详细信息

    我正在使用 Google Places API 和 Python 来构建一个食品集体智能应用程序 例如周围有哪些餐馆 他们的评级如何 营业时间是什么 等等 我正在Python中执行以下操作 from googleplaces import
  • 如何将base64字符串转换为文件?

    我使用 jquery 插件来裁剪图像 该插件将裁剪图像并将其作为 Base64 编码字符串提供给我 为了将其上传到 S3 我需要将其转换为文件并将该文件传递到上传函数中 我怎样才能做到这一点 我尝试了很多事情 包括使用解码字符串atob 没