Bootstrap 中实现文件上传控件

news/2025/3/10 14:58:29/文章来源:https://www.cnblogs.com/Dongmy/p/18762705
在 Bootstrap 中实现文件上传控件有多种方式,以下是一些常见的实现方法和示例:

1. 使用 Bootstrap 5 的默认文件上传控件

Bootstrap 5 提供了简洁的文件上传控件样式,可以直接使用 Bootstrap 的表单控件类来实现。

HTML 示例

HTML复制
<div class="mb-3"><label for="formFile" class="form-label">Default file input example</label><input class="form-control" type="file" id="formFile">
</div>
预览

支持多文件上传

添加 multiple 属性可以支持多文件选择
HTML复制
<div class="mb-3"><label for="formFileMultiple" class="form-label">Multiple files input example</label><input class="form-control" type="file" id="formFileMultiple" multiple>
</div>
预览

2. 使用 Bootstrap File Input 插件

Bootstrap File Input 是一个强大的文件上传插件,支持文件预览、上传进度显示等功能

HTML 结构

HTML复制
<div class="file-loading"><input id="singleFile" name="file" type="file">
</div>
预览

初始化插件

JavaScript复制
$(document).ready(function() {$("#singleFile").fileinput({uploadUrl: "/upload", // 文件上传路径language: "zh", // 语言设置allowedFileExtensions: ["jpg", "png", "docx"], // 允许的文件类型showUpload: true, // 是否显示上传按钮showPreview: true, // 是否显示预览maxFileCount: 1, // 最大文件数量autoReplace: true // 自动替换});
});

3. 自定义文件上传控件

如果需要更复杂的文件上传功能,可以结合 HTML 和 JavaScript 自定义文件上传控件

HTML 示例

HTML复制
<div class="mb-3"><label for="customFile" class="form-label">Custom file input</label><input type="file" class="form-control" id="customFile">
</div>
预览

JavaScript 示例

JavaScript复制
document.getElementById("customFile").addEventListener("change", function(event) {const file = event.target.files[0];console.log("File selected:", file);
});

4. 带拖拽功能的文件上传

可以使用 JavaScript 实现拖拽上传功能

HTML 示例

HTML复制
<div class="mb-3"><label for="formFile" class="form-label">Drag and drop file upload</label><div id="dropZone" class="border border-primary rounded p-4 text-center">Drag and drop a file here or click to select</div><input type="file" id="formFile" class="d-none">
</div>
预览

JavaScript 示例

JavaScript复制
const dropZone = document.getElementById("dropZone");
const formFile = document.getElementById("formFile");dropZone.addEventListener("click", () => formFile.click());
dropZone.addEventListener("dragover", (e) => {e.preventDefault();dropZone.classList.add("bg-light");
});
dropZone.addEventListener("dragleave", () => dropZone.classList.remove("bg-light"));
dropZone.addEventListener("drop", (e) => {e.preventDefault();dropZone.classList.remove("bg-light");formFile.files = e.dataTransfer.files;
});

5. 使用 AJAX 上传文件

可以结合 AJAX 实现异步文件上传,并在上传过程中显示进度

HTML 示例

HTML复制
<form id="uploadForm" action="/upload" method="post" enctype="multipart/form-data"><div class="mb-3"><label for="formFile" class="form-label">Upload file</label><input class="form-control" type="file" id="formFile" name="file"></div><button type="submit" class="btn btn-primary">Upload</button>
</form>
<div class="progress d-none mb-3"><div class="progress-bar" role="progressbar" style="width: 0%"></div>
</div>
预览

JavaScript 示例

JavaScript复制
document.getElementById("uploadForm").addEventListener("submit", function(e) {e.preventDefault();const formData = new FormData(this);const xhr = new XMLHttpRequest();xhr.open("POST", this.action, true);xhr.upload.addEventListener("progress", (event) => {if (event.lengthComputable) {const percent = (event.loaded / event.total) * 100;document.querySelector(".progress-bar").style.width = `${percent}%`;document.querySelector(".progress-bar").textContent = `${Math.round(percent)}%`;document.querySelector(".progress").classList.remove("d-none");}});xhr.onload = () => {if (xhr.status === 200) {alert("File uploaded successfully");} else {alert("Upload failed");}document.querySelector(".progress").classList.add("d-none");document.querySelector(".progress-bar").style.width = "0%";};xhr.send(formData);
});

总结

Bootstrap 提供了多种文件上传控件的实现方式,从简单的表单控件到复杂的拖拽上传和 AJAX 上传功能。你可以根据需求选择合适的方式:
  • 使用默认的 Bootstrap 文件输入控件
  • 使用 Bootstrap File Input 插件实现更强大的功能
  • 自定义文件上传控件并结合 JavaScript 实现拖拽和异步上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896826.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 19c 数据库实战:从单机部署到 DG 高可用架构搭建

前言:在当今数字化时代,数据已成为企业最宝贵的资产之一。而数据库作为数据存储和管理的核心工具,其重要性不言而喻。Oracle 数据库作为全球领先的商业数据库管理系统,以其卓越的性能、可靠性和强大的功能,广泛应用于企业的关键业务系统中。无论是大型企业的 ERP、CRM 系统…

002TypeScript开发实战

如果读取不到,情况下: 1、建好项目后我们在这里写一个ts语法,让项目跑起来npm run dev 2、在src中新建文件demo.vue

拯救你的排版噩梦,搞定Deepseek到WPS的完美转换!

我们在使用DeepSeek时,好不容易生成的文案复制到WPS之后,排版却全部乱掉了。别急,今天教你一招,让排版从此不再乱!第一步:下载LibreOffice。打开这个网址:http://www.libreoffice.org 点击顶部的“Download”,选择第一个菜单,然后点击黄色按钮开始下载。如果觉得浏览…

Deepseek学习随笔(16)--- 腾讯研究院发布:AI图景解码50个年度关键词(附网盘链接)

随着人工智能技术的迅猛发展,AI正在深刻改变我们的生活和工作方式。腾讯研究院发布的《AI图景解码50个年度关键词》报告,通过梳理50个关键词,全面展现了AI领域的最新进展、技术趋势和未来方向。这份报告不仅为AI从业者提供了宝贵的参考,也为普通读者打开了了解AI的窗口。本…

不再头痛!算法备案自评估报告要点分析

算法备案材料包含众多报告,其中最难的莫过于《算法安全自评估报告》。本人经手过几十份该材料,今天就结合个人经验总结下自评估报告的要点及一些容易踩的坑,希望可以帮助大家。有其它问题也可以参考这篇文章了解。 一、自评估报告常见问题 1、前后矛盾 报告内部的算法、风控…

C语言中标准输出的缓冲机制

什么是缓冲区 缓存区是内存空间的一部分,再内存中,内存空间会预留一定的存储空间,这些存储空间是用来缓冲输入和输出的数据,预留的这部分空间就叫做缓冲区。 其中缓冲区还会根据对应的是输入设备还是输出设备分为输入缓冲区和输出缓冲区。 为什么需要缓冲? 直接操作硬件(…

k8s回调函数-cnblog

回调函数 Kubernetes 为容器提供了生命周期回调。 回调使容器能够了解其管理生命周期中的事件,并在执行相应的生命周期回调时运行在处理程序中实现的代码。Kubernetes 支持 PostStart 和 PreStop 事件。 当一个容器启动后,Kubernetes 将立即发送 PostStart 事件;在容器被终结…

Transfomer 中的强制教学(Teacher Forcing)

在预测阶段, 我们希望输入 "天雷滚滚我好怕怕" 和 "[cls]" 能预测出下一个token: 劈 于是我们在训练阶段,我们的输入是 "天雷滚滚我好怕怕" 和 “[cls]劈得我浑身掉渣渣”, 由于我们希望"[cls]" 能预测出 “劈” 字。 我们在损失函…

jenkins安装后可用插件版本需要高版本的jenkins才能使用

首先我们直接用清华镜像源https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/,比如我们要找Jenkins2.429对应版本 emmmm,没有429,427凑合用吧 获取这个地址,放到updatesite 进服务器,找到default.json,替换掉它,然后重启jenkins。 cp default.json default.json.ba…

​党政机关数字化转型必备:10款信创认证项目管理工具深度测评

党政机关数字化转型是适应时代发展、提升治理效能的关键举措。在这一过程中,信创认证项目管理工具发挥着至关重要的作用。它们不仅能助力项目高效推进,还能保障信息安全与合规性。以下将对10款信创认证项目管理工具进行深度测评,为党政机关在数字化转型道路上的工具选择提供…

材料焊接工艺大全-芯晨微纳(河南) -专注于激光代加工

一、材料焊接中的“焊接力” 材料焊接,准确说应该为“材料互联”,是通过物理力、化学力、机械作用力等方式将原本相互隔离的材料连为一体的过程。 物理力中的四种基本力是万有引力、电磁力、强相互作用力和弱相互作用力。具体的,按性质(根据它们的物理性质来命名和分类)分…

Zabbix 7.2 + Grafana 中文全自动安装ISO镜像

简介 ​基于Zabbix 官方的Alma Linux 8 作为基础镜像。镜像源都改为国内大学镜像站,自动联网安装Zabbix+Grafana。安装中文字体、Zabbix和Grafana也配置默认中文。Zabbix 也指定中文字体,绘图无乱码。配置时区为东八区,Zabbix配置Web时区也为东八区。Grafana自动安装zabbix源…