windows.showOpenFilePicker方法,不用input也可以触发文件上传,可个性化文件上传控件

一、背景

最近在写项目是,需要用到文件上传的控件,但是目前elementui和原生的input标签样式都不是我需要的,虽然也可以我自己覆盖替换掉原生elementui的样式,但是,有没有可以完全是我自己定义的控件样式,手动触发文件上传呢? 答案是有的,就是windows的showOpenFilePicker方法。

二、showOpenFilePicker用法

用法示例:

复制代码
<button id="button">选择图片</button>
<p id="output"></p>

button.addEventListener('click', async function () {
    // 打开文件
    const arrFileHandle = await window.showOpenFilePicker({
        types: [{
            accept: {
                'image/*': ['.png', '.gif', '.jpeg', '.jpg', '.webp']
            }
        }],
        // 可以选择多个图片
        multiple: true
    });
    
    // 遍历选择的文件
    for (const fileHandle of arrFileHandle) {
        // 获取文件内容
        const fileData = await fileHandle.getFile();
        // 读文件数据
        const buffer = await fileData.arrayBuffer();
        // 转成Blod url地址
        let src = URL.createObjectURL(new Blob([buffer]));
        // 在页面中显示
        output.insertAdjacentHTML('beforeend', `<img src="${src}">`);
    }
});

三、showOpenFilePicker方法介绍

showOpenFilePicker(options) 方法中是可以传参的,具体支持的参数如下:

其中,options是可选参数,支持下面这些属性:

multiple

布尔值,默认值是 false ,表示只能选择一个文件。
excludeAcceptAllOption

布尔值,默认值是 false ,表示是否排除下面 types 中的所有的accept文件类型。
types

可选择的文件类型数组,每个数组项也是个对象,支持下面两个参数:
description :表示文件或者文件夹的描述,字符串,可选。

accept:接受的文件类型,对象,然后对象的键是文件的MIME匹配,值是数组,表示支持的文件后缀。具体可以下面的示意。

相关推荐
码农六六12 小时前
前端知识点梳理,前端面试复习
前端
打小就很皮...12 小时前
React 合同审查组件:按合同标题定位
前端·react.js·markdown
意法半导体STM3212 小时前
【官方原创】如何基于DevelopPackage开启安全启动(MP15x) LAT6036
javascript·stm32·单片机·嵌入式硬件·mcu·安全·stm32开发
CHU72903512 小时前
智慧陪伴新选择:陪诊陪护预约小程序的暖心功能解析
java·前端·小程序·php
奔跑的web.12 小时前
TypeScript namespace 详解:语法用法与使用建议
开发语言·前端·javascript·vue.js·typescript
你怎么知道我是队长12 小时前
win11系统查看设备配置
android·java·javascript
倾国倾城的反派修仙者12 小时前
鸿蒙开发——使用弹窗授权保存媒体库资源
开发语言·前端·华为·harmonyos
泰勒疯狂展开12 小时前
Vue3研学-组件的生命周期
开发语言·前端·vue
Charlie_lll12 小时前
学习Three.js–基于GeoJSON绘制2D矢量地图
前端·three.js
计算机学姐12 小时前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat