欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > uniapp 上传 base64 图片

uniapp 上传 base64 图片

2024/11/15 13:43:41 来源:https://blog.csdn.net/weixin_42249565/article/details/143734018  浏览:    关键词:uniapp 上传 base64 图片

在图片裁剪时候返回的是base64文件 需要上传到obs一般出现在h5网页端

可以直接使用 js 原始解决 应该只可以在h5浏览器内使用

// 提取 Base64 编码部分
const base64Data = e.tempFilePath.replace(/^data:image\/(\w+);base64,/, "");
// 将 Base64 编码转换为 ArrayBuffer
const binary = atob(base64Data);
const array = [];
for (let i = 0; i < binary.length; i++) {array.push(binary.charCodeAt(i));
}
const buffer = new Uint8Array(array).buffer;
// 创建一个 Blob 对象
const blob = new Blob([buffer], { type: 'image/png' });
// 创建一个 URL 指向 Blob 对象
let url =URL.createObjectURL(blob);//这里会把base64变成一个png图片的临时地址,后面就可以上传了
console.log(url);

使用 image-tools 工具,可用于 uni-app、微信小程序、5+APP、浏览器(需允许跨域)。

第一步: 安装

npm i image-tools --save

第二步:引入

npm i image-tools --save
或者下载后按包引入
// 以下路径需根据项目实际情况填写
import { pathToBase64, base64ToPath } from '../../js/image-tools/index.js'

第三步:使用

pathToBase64
从图像路径转换为base64,uni-app、微信小程序和5+APP使用的路径不支持网络路径,
如果是网络路径需要先使用下载API下载下来。

pathToBase64(path).then(base64 => {console.log(base64)}).catch(error => {console.error(error)})

base64ToPath
将图像base64保存为文件,返回文件路径。

base64ToPath(base64).then(path => {console.log(path)}).catch(error => {console.error(error)})

多并发使用优化
可以利用promise来串行和并行的执行多个任务

// 并行
Promise.all(paths.map(path => pathToBase64(path))).then(res => {console.log(res)// [base64, base64...]}).catch(error => {console.error(error)})
// 串行
paths.reduce((promise, path) => promise.then(res => pathToBase64(path).then(base64 => (res.push(base64), res))), Promise.resolve([])).then(res => {console.log(res)// [base64, base64...]}).catch(error => {console.error(error)})

小伙伴们记得点赞收藏哦~~~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com