
可以看到这里我要转换的数据是content字段,即将base64文件数据转换后下载下来:
- downloadAttachment({ attachmentId: id })
- .then(({ data }) => {
- proxy.$modal.closeLoading();
- // atob先解码base64数据
- const raw = window.atob(data.content);
- // 获取解码后的字符串长度
- const rawLength = raw.length;
- // 初始化一个 8 位无符号整型数组
- const uInt8Array = new Uint8Array(rawLength);
- // 将每个解码字符转换为unicode编码再存入数组中
- for (let i = 0; i < rawLength; ++i) {
- uInt8Array[i] = raw.charCodeAt(i);
- }
- // 通过blob格式将数组转换成你想要的类型文件,第二个是类型
- const blob = new Blob([uInt8Array], { type: data.contentType });
- // 创建一个a标签在页面中实现下载
- const elink = document.createElement("a");
- elink.download = data.attachName;
- elink.style.display = "none";
- elink.href = URL.createObjectURL(blob);
- document.body.appendChild(elink);
- elink.click();
- })
- .catch(() => {
- proxy.$modal.closeLoading();
- });