一些场景,比如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) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
写给初用Nestj做项目的你(第二篇: 配置gitlab-runner操作gitlab) 如果不想自己搭...
工欲善其事,必先利其器! 就在不久之前,Java领域的开发神器 IntelliJ IDEA 终...
web前端开发中避免不了要在页面上显示很多文章,如何才能从文中,文末点击快捷的...
链入式是把所有的 样式 放在一个或多个 外部样式表文件 中,这个文件是以 css 为...
对于网页制作者来说,最烦琐的事情可能就是给页面中的图片或文字加链接了。假如...
考虑以下两段代码: 复制代码 代码如下: urlset url lochttp://www.caixw.com/ar...
根据百度地图官方解释,在移动端 H5 页面中可监听下面这 4 个事件: touchstart, ...
本文将介绍 CSS 中一个非常有意思的属性 mask 。 顾名思义,mask 译为遮罩。在 C...
最近做项目,遇到一个问题,在手机上要实现视频的全屏播放功能。测试了很久,终...
前言 2021 年中国共产党将迎来建党 100 周年。百年来中国社会发生了沧桑巨变。从...