当前位置:首页 > JavaScript

js实现文件的上传

2026-04-03 23:09:35JavaScript

使用HTML表单实现文件上传

在HTML中创建一个表单,设置enctypemultipart/form-data,并包含一个input类型为file的元素:

<form id="uploadForm" enctype="multipart/form-data">
  <input type="file" id="fileInput" name="file">
  <button type="submit">上传</button>
</form>

通过JavaScript处理上传

使用FormData对象收集文件数据,并通过fetchXMLHttpRequest发送到服务器:

document.getElementById('uploadForm').addEventListener('submit', function(e) {
  e.preventDefault();
  const fileInput = document.getElementById('fileInput');
  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));
});

显示上传进度

使用XMLHttpRequestupload事件监听进度:

const xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', function(e) {
  if (e.lengthComputable) {
    const percent = (e.loaded / e.total) * 100;
    console.log(`上传进度: ${percent.toFixed(2)}%`);
  }
});
xhr.open('POST', '/upload');
xhr.send(formData);

多文件上传处理

通过multiple属性允许选择多个文件,并遍历添加到FormData

<input type="file" id="fileInput" name="files" multiple>
const fileInput = document.getElementById('fileInput');
const formData = new FormData();
Array.from(fileInput.files).forEach(file => {
  formData.append('files[]', file);
});

文件类型和大小验证

在上传前进行客户端验证:

js实现文件的上传

const file = fileInput.files[0];
const validTypes = ['image/jpeg', 'image/png'];
const maxSize = 5 * 1024 * 1024; // 5MB

if (!validTypes.includes(file.type)) {
  alert('仅支持JPEG/PNG格式');
  return;
}

if (file.size > maxSize) {
  alert('文件大小超过5MB限制');
  return;
}

使用第三方库简化操作

对于复杂需求,可考虑使用如Dropzone.jsUppy等专门的文件上传库,它们提供拖放支持、预览、分块上传等功能。

标签: 上传文件
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

vue文件下载实现

vue文件下载实现

使用 Blob 对象下载文件 在 Vue 中可以通过创建 Blob 对象实现文件下载。通过将后端返回的二进制数据转换为 Blob,再生成下载链接触发浏览器下载行为。 axios.get('/api/…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue实现文件导入

vue实现文件导入

文件导入的基本实现 在Vue中实现文件导入通常通过HTML的<input type="file">元素结合File API完成。创建一个文件选择组件,监听change事件获取用户选择的文件…

vue 实现上传视频

vue 实现上传视频

使用 Vue 实现上传视频功能 在 Vue 中实现上传视频功能,通常需要结合 HTML 的 <input type="file"> 元素和 Vue 的事件处理。以下是具体实现方法: 基本…

vue实现上传进度

vue实现上传进度

Vue 实现文件上传进度 在 Vue 中实现文件上传进度可以通过 XMLHttpRequest 或 axios 的 onUploadProgress 事件来监听上传进度。以下是两种常见实现方式: 使…