别再用input file做上传组件了

最近写密码管理的小App,本来是打算的开发完以后,通过数据库直接导数据,既方便又快捷。

但是发现因为存在加密程序的缘故,直接导显然不现实。所以新加了一个导入的功能,又因为框架使用的AntDesign,用他那个上传限制比较多,所以自己简单封装一个。

普通上传

一般我们封装上传都是用<input type="file" />进行操作。

html 复制代码
<button onclick="targetFileUpload">上传</button>

<input type="file" id="fileInputId" oninput="upload" />

<script>
    function targetFileUpload() {
        document.getElementById('fileInputId').click();
    }

    function upload() {
        // 上传逻辑
    }
</script>

showOpenFilePicker上传

使用window.showOpenFilePicker方法触发上传操作个人感觉是更优的选择。

js 复制代码
const [fileHandle] = await window.showOpenFilePicker({
    types: [
        {
            description: '测试数据',
            accept: {
                'application/json': ['.json']
            }
        }
    ]
});
const file = await fileHandle.getFile();

优劣对比

兼容性

<input type="file">兼容性更好,几乎所有浏览器都支持这种传统的文件上传方式,包括旧版本的浏览器。

showOpenFilePicker的兼容性如下图所示:

用户体验

如果直接定义上传文件框,更推荐使用<input type="file">,使用CSS再调调样式即可。

但是如果是使用Button触发,或者拖拽触发,更推荐使用showOpenFilePicker

开发控制度

<input type="file">一般而言开发很难控制的颗粒度非常精细,尤其是对于文件的选择和读取权限方面。

showOpenFilePicker几乎能控制到文件选择的每一个步骤。

总结

  • 老旧浏览器选择<input type="file">
  • 新浏览器选择showOpenFilePicker
相关推荐
华仔啊6 分钟前
Vue3+CSS实现一个非常丝滑的 input 标签上浮动画,设计师看了都点赞
前端·css·vue.js
北海道浪子10 分钟前
[免费送$1000]ClaudeCode、Codex等AI模型在开发中的使用
前端·人工智能·后端
明月与玄武16 分钟前
2025 前端框架决战:Vue 与 React 分析优缺点及使用场景!
前端·vue.js·react.js
无盐海31 分钟前
XSS漏洞攻击 (跨站脚本攻击)
前端·xss
不一样的少年_37 分钟前
1024程序员节:用不到100行代码做个“代码雨屏保”装X神器(附源码)
前端·javascript·浏览器
阿奇__42 分钟前
el-table默认排序设置
前端·javascript·vue.js
hongc931 小时前
element-ui el-table 设置固定列fixed 高度不对
前端·vue.js·elementui
Forfun_tt1 小时前
xss-labs pass-12
前端·xss
云枫晖1 小时前
Webpack系列-编译过程
前端·webpack
AskHarries1 小时前
Toolhub — 一个干净实用的在线工具集合
前端·后端