元素,设置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);

客户端验证

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

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

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

js实现word上传

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

相关文章

vue上传视频实现

vue上传视频实现

Vue 实现视频上传功能 安装依赖 确保项目中已安装 axios 或 vue-upload-component 等上传库。通过 npm 安装: npm install axios 前端组件实现 创建…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现预览

js实现预览

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