实现文件上传 HTML 提供原生文件上传控件,通过 实现:
当前位置:首页 > JavaScript

js 实现input file

2026-04-04 03:34:21JavaScript

使用 <input type="file"> 实现文件上传

HTML 提供原生文件上传控件,通过 <input type="file"> 实现:

<input type="file" id="fileInput" />

监听文件选择事件

通过 change 事件获取用户选择的文件:

document.getElementById('fileInput').addEventListener('change', function(event) {
  const files = event.target.files;
  console.log(files); // FileList 对象
});

处理多文件选择

添加 multiple 属性允许选择多个文件:

<input type="file" id="fileInput" multiple />

限制文件类型

通过 accept 属性限制可上传的文件类型:

<!-- 只允许图片 -->
<input type="file" accept="image/*" />

<!-- 指定具体格式 -->
<input type="file" accept=".pdf,.doc,.docx" />

读取文件内容

使用 FileReader API 读取文件内容:

const reader = new FileReader();
reader.onload = function(e) {
  console.log(e.target.result); // 文件内容
};
reader.readAsText(files[0]); // 以文本形式读取

显示文件预览

对于图片文件,可以生成预览:

const reader = new FileReader();
reader.onload = function(e) {
  const img = document.createElement('img');
  img.src = e.target.result;
  document.body.appendChild(img);
};
reader.readAsDataURL(files[0]);

上传文件到服务器

使用 FormDatafetch 上传文件:

const formData = new FormData();
formData.append('file', files[0]);

fetch('/upload', {
  method: 'POST',
  body: formData
}).then(response => {
  console.log('上传成功');
});

自定义样式

原生文件输入框样式受限,可通过以下方式自定义:

<label class="custom-file-upload">
  <input type="file" />
  选择文件
</label>
.custom-file-upload {
  border: 1px solid #ccc;
  display: inline-block;
  padding: 6px 12px;
  cursor: pointer;
}
input[type="file"] {
  display: none;
}

文件验证

在客户端验证文件大小和类型:

js 实现input file

const file = files[0];
if (file.size > 5 * 1024 * 1024) {
  alert('文件大小不能超过5MB');
  return;
}

if (!file.type.match('image.*')) {
  alert('请选择图片文件');
  return;
}

标签: jsinput
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…