元素,设置accept属性限制为.doc,.docx格式:
当前位置:首页 > JavaScript

js实现word上传

2026-03-01 15:03:27JavaScript

使用input元素实现文件选择

在HTML中创建一个<input type="file">元素,设置accept属性限制为.doc,.docx格式:

<input type="file" id="wordUpload" accept=".doc,.docx" />

监听文件选择事件

通过JavaScript监听change事件获取用户选择的Word文件:

document.getElementById('wordUpload').addEventListener('change', function(event) {
    const file = event.target.files[0];
    if (!file) return;

    console.log('Selected file:', file.name, file.type, file.size);
});

使用FileReader读取文件内容

将Word文件读取为ArrayBuffer或二进制字符串:

const reader = new FileReader();
reader.onload = function(e) {
    const arrayBuffer = e.target.result;
    // 处理文件内容
};
reader.readAsArrayBuffer(file);

使用第三方库解析Word文档

安装docx或mammoth等库进行文档解析:

npm install docx

使用docx库解析.docx文件:

import { Document } from 'docx';
const docx = require('docx');

reader.onload = async function(e) {
    const arrayBuffer = e.target.result;
    const doc = await Document.load(arrayBuffer);
    console.log(doc.paragraphs);
};

实现文件上传到服务器

使用FormData对象和fetch API上传文件:

const formData = new FormData();
formData.append('wordFile', file);

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

添加拖放上传功能

实现拖放区域和事件处理:

<div id="dropZone">拖放Word文件到这里</div>
const dropZone = document.getElementById('dropZone');
dropZone.addEventListener('dragover', (e) => {
    e.preventDefault();
    dropZone.classList.add('dragover');
});

dropZone.addEventListener('drop', (e) => {
    e.preventDefault();
    dropZone.classList.remove('dragover');
    const file = e.dataTransfer.files[0];
    // 处理拖放的文件
});

显示上传进度

使用XMLHttpRequest显示上传进度:

const xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(e) {
    const percent = Math.round((e.loaded / e.total) * 100);
    console.log(`Upload progress: ${percent}%`);
};
xhr.open('POST', '/upload', true);
xhr.send(formData);

客户端验证

在上传前验证文件类型和大小:

js实现word上传

if (!file.name.match(/\.(doc|docx)$/i)) {
    alert('请上传Word文档');
    return;
}

if (file.size > 10 * 1024 * 1024) { // 10MB限制
    alert('文件大小超过限制');
    return;
}

标签: 上传js
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现抽奖

js实现抽奖

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…