当前位置:首页 > JavaScript

js 实现异步上传

2026-04-04 05:01:05JavaScript

异步上传的实现方法

在JavaScript中,实现异步上传通常使用XMLHttpRequest、Fetch API或第三方库如axios。以下是几种常见方法:

使用XMLHttpRequest

XMLHttpRequest是传统的异步上传方式,兼容性较好:

js 实现异步上传

const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.onload = function() {
  if (xhr.status === 200) {
    console.log('上传成功', xhr.responseText);
  } else {
    console.error('上传失败');
  }
};
const formData = new FormData();
formData.append('file', fileInput.files[0]);
xhr.send(formData);

使用Fetch API

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

使用axios

axios是流行的HTTP客户端库,简化了异步上传:

js 实现异步上传

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

axios.post('/upload', formData, {
  headers: {
    'Content-Type': 'multipart/form-data'
  }
})
.then(response => console.log('上传成功', response.data))
.catch(error => console.error('上传失败', error));

进度监控

对于大文件上传,可以监控上传进度:

const xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(event) {
  const percent = (event.loaded / event.total) * 100;
  console.log(`上传进度: ${percent}%`);
};
xhr.open('POST', '/upload', true);
xhr.send(formData);

分片上传

对于超大文件,可采用分片上传策略:

async function uploadChunks(file) {
  const chunkSize = 1024 * 1024; // 1MB
  let offset = 0;

  while (offset < file.size) {
    const chunk = file.slice(offset, offset + chunkSize);
    const formData = new FormData();
    formData.append('chunk', chunk);
    formData.append('offset', offset);

    await fetch('/upload-chunk', {
      method: 'POST',
      body: formData
    });

    offset += chunkSize;
  }
}

这些方法可以根据具体需求选择使用,现代项目推荐优先考虑Fetch API或axios方案。

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

相关文章

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…