前端解析图片文件流excel文件流

前端处理文件流

使用场景: 后端以文件流的方式返回数据,前端需要进行转化后使用

图片流文件

第一步、配置获取图片流接口

export function getCurrent(dev){
    return api({
        url:'/xxx',
        method:'get',
        responseType:'blob',
        params:{dev}
    })
}

第二步、设置图片显示区域

<img :src="currentPicture" alt="">

第三步、文件流转化地址

        init(){
            getCurrent(this.routename).then(res => {
                let blob = new Blob([res.data],{type:'image/jpeg'})
                this.currentPicture = window.URL.createObjectURL(blob)
            })
        }
        转化后的地址长这样:blob:http://localhost:8080/7083d583-a30e-45f9-ac56-5674e93da8c8

excel流

步骤和上面类似主要需要将type改成对应的文件类型如excel文件就是 type: "application/vnd.ms-excel", 然后就是用对应的标签展示

   let a = document.createElement("a")
   let blob = new Blob([res], {
      type: "application/vnd.ms-excel", //将会被放入到blob中的数组内容的MIME类型
   })
   let objectUrl = URL.createObjectURL(blob) //生成一个url
   a.setAttribute("href", objectUrl)
   a.setAttribute("download", "盘点模板.xls")
   a.click()

### 解析包含图片Excel 文件 在前端解析包含图片Excel 文件可以通过 `js-xlsx` 库来实现。此库支持多种数据类型的读取,包括字符串、二进制以及 Base64 编码的数据[^2]。 对于含有图像的 Excel 文档,核心挑战在于正确提取并显示这些嵌入式的图形对象。通常情况下,单纯依靠 js-xlsx 可能无法直接获取到高质量的图片资源,因为该库主要用于处理表格结构化数据而非多媒体内容。然而,可以采用间接方式完成这一目标: #### 使用 FileReader 和 js-xlsx 结合的方式 为了能够加载带有图片的工作簿,首先需要利用 HTML5 的 `FileReader` API 来异步读取用户的文件输入。一旦获得了文件的内容,则可将其传递给 js-xlsx 进行进一步分析。 ```javascript function handleFile(e) { const file = e.target.files[0]; if (!file) return; var reader = new FileReader(); reader.onload = function (e) { /* Parse data */ var data = new Uint8Array(reader.result); /* Read workbook */ var wb = XLSX.read(data, {type:'array'}); process_wb(wb); // 自定义函数用于后续操作 console.log(JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]))); }; reader.readAsArrayBuffer(file); } ``` 上述代码片段展示了如何设置事件监听器以响应文件选择动作,并通过调用 `readAsArrayBuffer()` 方法将选中的文件转换成 ArrayBuffer 类型以便于 js-xlsx 处理[^1]。 当涉及到具体提取图片时,需要注意的是 js-xlsx 提供了一个名为 `drawings` 的属性列表,其中包含了关于每张图表的信息,比如位置和尺寸等元数据。但是要真正获得图片本身还需要额外的努力,例如遍历 drawings 数组寻找特定标记的对象,再尝试从中抽取 base64 编码后的图像串或其他形式的实际图像数据。 由于这部分逻辑较为复杂且依赖具体的 Excel 版本特性,建议开发者查阅官方文档或参考社区贡献的相关插件/扩展包来简化程[^3]。 #### 显示图片 假设已经成功从 Excel 中提取到了图片作为 Blob 对象,那么就可以按照如下所示创建链接下载或者预览图片了: ```javascript let imgBlob = ... ;// 获取到的图片 blob 数据 let imageObjectUrl = URL.createObjectURL(imgBlob); document.getElementById('image-preview').src = imageObjectUrl; ``` 这段简单的 JavaScript 代码会动态生成一个指向所给定 Blob 的临时 URL 并赋值给 `<img>` 标签的 src 属性,从而实现在网页上即时查看图片的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值