即可实现基础功能。以下是基本实现方式:
当前位置:首页 > JavaScript

js 实现input file

2026-03-01 03:02:06JavaScript

实现文件上传的input元素

在HTML中创建一个文件上传输入框非常简单,使用<input type="file">即可实现基础功能。以下是基本实现方式:

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

监听文件选择事件

通过JavaScript可以监听用户选择文件的事件,获取文件信息:

document.getElementById('fileInput').addEventListener('change', function(event) {
    const files = event.target.files;
    console.log('选中的文件:', files);
});

获取文件详细信息

从事件对象中可以获取文件的名称、大小、类型等信息:

const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', function(e) {
    const selectedFile = e.target.files[0];
    console.log('文件名:', selectedFile.name);
    console.log('文件大小:', selectedFile.size, 'bytes');
    console.log('文件类型:', selectedFile.type);
    console.log('最后修改时间:', selectedFile.lastModified);
});

限制文件类型

可以通过accept属性限制用户只能选择特定类型的文件:

<input type="file" accept=".jpg,.jpeg,.png,.pdf">

或者使用MIME类型限制:

<input type="file" accept="image/*">

多文件选择

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

<input type="file" multiple>

处理多个文件时需要遍历files数组:

fileInput.addEventListener('change', function(e) {
    Array.from(e.target.files).forEach(file => {
        console.log(file.name);
    });
});

文件预览(图片)

对于图片文件,可以使用FileReader实现预览功能:

const fileInput = document.getElementById('fileInput');
const preview = document.getElementById('preview');

fileInput.addEventListener('change', function(e) {
    const file = e.target.files[0];
    if (!file.type.match('image.*')) return;

    const reader = new FileReader();
    reader.onload = function(e) {
        preview.src = e.target.result;
    };
    reader.readAsDataURL(file);
});

自定义样式

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

<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;
}

文件上传到服务器

使用FormData对象和fetch API可以将文件上传到服务器:

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

fetch('/upload', {
    method: 'POST',
    body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

清除已选文件

通过重置input的值可以清除已选择的文件:

fileInput.value = '';

拖放文件上传

除了点击选择文件,还可以实现拖放功能:

<div id="dropArea">
    拖放文件到这里
</div>
const dropArea = document.getElementById('dropArea');

dropArea.addEventListener('dragover', (e) => {
    e.preventDefault();
    dropArea.classList.add('highlight');
});

dropArea.addEventListener('dragleave', () => {
    dropArea.classList.remove('highlight');
});

dropArea.addEventListener('drop', (e) => {
    e.preventDefault();
    dropArea.classList.remove('highlight');
    const files = e.dataTransfer.files;
    console.log(files);
});

js 实现input file

标签: jsinput
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inp…