新闻中心

J*aScript 获取 HTML 文件上传的文件名

2025-10-08
浏览次数:
返回列表

javascript 获取 html 文件上传的文件名

本文介绍了如何使用 J*aScript 获取 HTML 文件上传控件中选择的文件名。通过监听 change 事件,可以实时获取用户选择的文件信息,并将其文件名显示在页面上。文章提供了详细的代码示例和 CSS 样式建议,帮助开发者轻松实现文件名的动态展示。

在 Web 开发中,经常需要获取用户通过文件上传控件选择的文件名,并在页面上进行展示。直接读取 input 元素的 value 属性,只能在第二次点击按钮后才能获取到值,并且获取的是文件的完整路径,而非文件名。正确的做法是监听 input 元素的 change 事件,并在事件处理函数中获取 File 对象,进而获取文件名。

实现步骤

  1. HTML 结构: 创建一个隐藏的文件上传控件 (input type="file"),一个按钮 (button),以及一个用于显示文件名的 span 元素。

    <input type="file" name="" id="filee">
    <button type="button" id="btn">Choose a File</button>
    <span id="filename"></span>

    注意 button 标签的 type 属性设置为 "button",防止默认的 submit 行为。

  2. J*aScript 代码: 获取 HTML 元素,并为文件上传控件绑定 change 事件监听器,为按钮绑定 click 事件监听器。

    let file = document.getElementById('filee');
    let btn = document.getElementById("btn");
    let filename = document.getElementById("filename");
    
    file.addEventListener('change', event => {
      const [selectedFile] = event.target.files;
      filename.innerText = selectedFile.name;
    });
    
    btn.addEventListener('click', () => {
      file.click();
    });

    这段代码首先获取了文件上传控件、按钮和用于显示文件名的 span 元素。然后,它为文件上传控件添加了一个 change 事件监听器。当用户选择文件后,事件处理函数会被触发,从 event.target.files 中获取 File 对象,并将其 name 属性(即文件名)赋值给 span 元素的 innerText 属性,从而在页面上显示文件名。 最后,为按钮添加一个 click 事件监听器,点击按钮时,触发文件上传控件的点击事件,从而弹出文件选择框。

    jQuery多文件上传并获取大小与格式代码 jQuery多文件上传并获取大小与格式代码

    jQuery多文件上传并获取大小与格式代码

    jQuery多文件上传并获取大小与格式代码 50 查看详情 jQuery多文件上传并获取大小与格式代码
  3. 隐藏文件上传控件: 为了美观,通常会将默认的文件上传控件隐藏,并使用自定义的按钮来触发文件选择。可以使用 CSS 来实现隐藏效果。

    #filee {
      clip: rect(0 0 0 0);
      clip-path: inset(50%);
      height: 1px;
      overflow: hidden;
      position: absolute;
      white-space: nowrap;
      width: 1px;
    }

    这种方式隐藏元素更优雅,更符合语义,并且对屏幕阅读器友好。避免使用 visibility: hidden 或 display: none,因为这些方法可能会影响辅助技术的可访问性。

完整代码示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>获取文件名</title>
    <style type="text/css">
        #filee{
            clip: rect(0 0 0 0);
            clip-path: inset(50%);
            height: 1px;
            overflow: hidden;
            position: absolute;
            white-space: nowrap;
            width: 1px;
        }
    </style>
</head>
<body>
    <input type="file" name="" id="filee">
    <button type="button" id="btn">Choose a File</button>
    <span id="filename"></span>
    <script type="text/j*ascript">
        let file = document.getElementById('filee');
        let btn = document.getElementById("btn");
        let filename = document.getElementById("filename");

        file.addEventListener('change', event => {
          const [selectedFile] = event.target.files;
          filename.innerText = selectedFile.name;
        });

        btn.addEventListener('click', () => {
          file.click();
        });
    </script>
</body>
</html>

注意事项

  • event.target.files 返回一个 FileList 对象,即使只允许上传一个文件,也需要通过索引 [0] 来获取 File 对象。
  • File 对象包含很多有用的信息,例如 name(文件名)、size(文件大小)、type(文件类型)等,可以根据需要进行使用。
  • 出于安全考虑,浏览器不允许 J*aScript 直接操作本地文件系统,因此无法直接获取文件的完整路径。

总结

通过监听 change 事件,可以方便地获取 HTML 文件上传控件中选择的文件名,并将其动态显示在页面上。这种方法简单易用,并且可以获取到 File 对象的其他有用信息,为 Web 开发提供了便利。 记住使用合适的 CSS 样式来隐藏默认的文件上传控件,并提供自定义的按钮来提升用户体验。

以上就是J*aScript 获取 HTML 文件上传的文件名的详细内容,更多请关注其它相关文章!


# 并将其  # 山西抖音seo方案公司  # SEO入门玄关吊顶装修  # seo优化系统招商  # 抖音精准广告推广营销获客  # 保定商城网站优化服务  # 明星网站建设美丽中国  # 太原seo怎么推广  # 搏击类场馆如何推广营销  # 未来5年seo优化  # 推广美丽乡村的网站推荐  # 而在  # 的是  # 显示效果  # css  # 绑定  # 自定义  # 并在  # 单选框  # 表单  # 文件上传  # overflow  # 点击事件  # 浏览器  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 极速漫画官方主页网址 极速漫画漫画在线浏览官网链接  新手怎么开始学化妆 零基础化妆入门教程  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  Python自定义类排序:解决lambda键值访问TypeError的实践指南  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  必由学网页版入口 必由学官方平台直接访问  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  2026年CSGO开箱网站推荐 CSGO开箱平台精选  微博网页版主页入口 微博官方网站免登录访问  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  C#中解析不规范的HTML为XML 常见的坑与解决办法  Node.js中HTML按钮与J*aScript函数交互的正确姿势  QQ邮箱正确登录入口_QQ邮箱官方网站使用地址  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  深入理解J*a编译器的兼容性选项:从-source到--release  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  快手赚钱渠道_快手收益来源  谷歌推RCS信息存档功能:公司可监控员工私密信息!  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  BetterDiscord插件中安全更新用户简介的实践指南  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  红果短剧网页版官网入口 官方最新网址发布  cad如何更改注释性对象的比例_cad注释性比例调整方法  Golang如何实现简单的Web表单_Golang表单提交与验证处理方法  Win11怎么开启高性能模式_Windows 11电源计划优化设置  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧  深入理解与实现最大堆的Heapify过程:常见错误与修正  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  必由学官网快捷入口 必由学网页版在线学习平台  机器学习中对数变换预测结果的反向还原  手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  QQ官网正版登录链接 QQ在线登录入口最新  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  4399体育竞技小游戏_4399小游戏赛事入口  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  在Runstone环境中高效处理TasteDive API的JSON数据 

搜索