资讯专栏INFORMATION COLUMN

data:image data url 文件转为Blob上传后端

AdolphLWQ / 3501人阅读

摘要:一些场景,比如获取的图片,或者微信开发返回的图片格式是格式的,我们需要上传到服务器上,那就需要进行转化。将转成转构建上传表单可以选择性的加入一些鉴权进行数据上传,我这里使用的是我已经对进行了封装

一些场景,比如canvas获取的图片,或者微信开发sdk返回的图片格式是data:img格式的,我们需要上传到服务器上,那就需要进行转化。

将dataURL转成Blob

// base64 转 blob
dataURItoBlob(dataURI) {
  // convert base64/URLEncoded data component to raw binary data held in a string
  let byteString;
  if (dataURI.split(",")[0].indexOf("base64") >= 0) {
    byteString = atob(dataURI.split(",")[1]);
  } else byteString = unescape(dataURI.split(",")[1]);

  // separate out the mime component
  const mimeString = dataURI
    .split(",")[0]
    .split(":")[1]
    .split(";")[0];

  // write the bytes of the string to a typed array
  const ia = new Uint8Array(byteString.length);
  for (let i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ia], { type: mimeString });
},

构建Form上传表单

const blob = dataURItoBlob(imgDataUrl);
const formData = new FormData();
// formData.append("auth", state.token.auth); 可以选择性的加入一些鉴权
formData.append("file", blob);

进行数据上传,我这里使用的是axios

const params = {
   url: "/store/file",
   payload: formData
 };
 const data = await this.upload(params);

我已经对axios进行了封装

export const upload = (params) => {
  const { url, payload } = params
  return axios.post(url, payload, {
    headers: {
      "Content-Type": "multipart/form-data"
    }
  }).then(x => x.data)
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109958.html

相关文章

  • 使用 JavaScript 根据用户照片和姓名生成海报

    摘要:前言最近在为公司的一个比赛制作专题页,碰到一个使用参赛者上传的照片生成专属海报的需求,实现过程中用到了一些以前没用过的,也踩了一些坑,于是将其记录下来。 前言 最近在为公司的一个比赛制作专题页,碰到一个使用参赛者上传的照片生成专属海报的需求,实现过程中用到了一些以前没用过的 api,也踩了一些坑,于是将其记录下来。 需求描述 用户点击按钮进行照片上传 照片上传完成后,将照片进行裁剪,...

    rickchen 评论0 收藏0
  • zx-editor 移动端(HTML5)富文本编辑器,可与原生App混合(hybrid)开发

    摘要:移动端文档富文本编辑器,支持图文混排引用大标题无序列表,字体颜色加粗斜体。可用于独立项目开发,也可以用于与原生混合开发。,图片文件最大尺寸限制,单位,默认,编辑器左右内边距,默认像素,是否显示底部工具栏图片标签连接添加等图标。 ZxEditor 移动端HTML文档(富文本)编辑器,支持图文混排、引用、大标题、无序列表,字体颜色、加粗、斜体。 可用于独立web项目开发,也可以用于与原生A...

    lansheng228 评论0 收藏0

发表评论

0条评论

AdolphLWQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<