元素配合JavaScript实现基础文件上传功能:
当前位置:首页 > JavaScript

js实现文件

2026-04-05 09:26:46JavaScript

文件上传基础实现

使用HTML的<input type="file">元素配合JavaScript实现基础文件上传功能:

<input type="file" id="fileInput">
<button onclick="uploadFile()">上传</button>

<script>
function uploadFile() {
  const fileInput = document.getElementById('fileInput');
  const file = fileInput.files[0];

  if (!file) {
    alert('请选择文件');
    return;
  }

  console.log('文件名:', file.name);
  console.log('文件大小:', file.size);
  console.log('文件类型:', file.type);
}
</script>

文件预览功能

在客户端实现图片预览功能:

function previewImage() {
  const fileInput = document.getElementById('fileInput');
  const preview = document.getElementById('preview');

  const file = fileInput.files[0];
  const reader = new FileReader();

  reader.onload = function(e) {
    preview.src = e.target.result;
  };

  reader.readAsDataURL(file);
}

多文件上传处理

处理多个文件的选择和上传:

function handleMultipleFiles() {
  const fileInput = document.getElementById('multiFileInput');
  const files = fileInput.files;

  for (let i = 0; i < files.length; i++) {
    console.log(`文件${i+1}:`, files[i].name);
  }
}

文件下载实现

使用Blob对象实现文件下载:

function downloadFile() {
  const content = '这是要下载的文件内容';
  const blob = new Blob([content], { type: 'text/plain' });
  const url = URL.createObjectURL(blob);

  const a = document.createElement('a');
  a.href = url;
  a.download = 'example.txt';
  a.click();

  URL.revokeObjectURL(url);
}

文件拖放功能

实现拖放区域接收文件:

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

文件分块上传

实现大文件分块上传:

async function uploadInChunks(file) {
  const CHUNK_SIZE = 1024 * 1024; // 1MB
  const totalChunks = Math.ceil(file.size / CHUNK_SIZE);

  for (let chunkNumber = 0; chunkNumber < totalChunks; chunkNumber++) {
    const start = chunkNumber * CHUNK_SIZE;
    const end = Math.min(start + CHUNK_SIZE, file.size);
    const chunk = file.slice(start, end);

    await uploadChunk(chunk, chunkNumber, totalChunks, file.name);
  }
}

function uploadChunk(chunk, chunkNumber, totalChunks, fileName) {
  const formData = new FormData();
  formData.append('chunk', chunk);
  formData.append('chunkNumber', chunkNumber);
  formData.append('totalChunks', totalChunks);
  formData.append('fileName', fileName);

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

文件类型验证

验证上传文件的类型:

function validateFileType(file, allowedTypes) {
  const fileType = file.type;
  const isValid = allowedTypes.includes(fileType);

  if (!isValid) {
    alert(`不支持的文件类型: ${fileType}`);
    return false;
  }

  return true;
}

// 使用示例
const allowedTypes = ['image/jpeg', 'image/png'];
const file = document.getElementById('fileInput').files[0];
validateFileType(file, allowedTypes);

文件进度监控

监控文件上传进度:

js实现文件

function uploadWithProgress(file) {
  const xhr = new XMLHttpRequest();
  const formData = new FormData();
  formData.append('file', file);

  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      const percentComplete = (e.loaded / e.total) * 100;
      console.log('上传进度:', percentComplete + '%');
    }
  };

  xhr.onload = function() {
    console.log('上传完成');
  };

  xhr.open('POST', '/upload', true);
  xhr.send(formData);
}

标签: 文件js
分享给朋友:

相关文章

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现抽奖

js实现抽奖

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…