当前位置:首页 > JavaScript

js实现视频上传代码

2026-04-04 23:57:53JavaScript

js实现视频上传代码

视频上传实现方法

前端部分(HTML + JavaScript)

<input type="file" id="videoUpload" accept="video/*">
<button onclick="uploadVideo()">上传视频</button>
<progress id="uploadProgress" value="0" max="100"></progress>

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

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

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

  const xhr = new XMLHttpRequest();
  xhr.open('POST', '/upload', true);

  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      const percent = Math.round((e.loaded / e.total) * 100);
      document.getElementById('uploadProgress').value = percent;
    }
  };

  xhr.onload = function() {
    if (xhr.status === 200) {
      alert('上传成功');
    } else {
      alert('上传失败');
    }
  };

  xhr.send(formData);
}
</script>

后端部分(Node.js + Express)

const express = require('express');
const multer = require('multer');
const path = require('path');

const app = express();
const upload = multer({ 
  dest: 'uploads/',
  limits: { fileSize: 100 * 1024 * 1024 } // 限制100MB
});

app.post('/upload', upload.single('video'), (req, res) => {
  if (!req.file) {
    return res.status(400).send('未收到文件');
  }

  // 获取文件信息
  const fileInfo = {
    originalName: req.file.originalname,
    size: req.file.size,
    mimetype: req.file.mimetype,
    path: req.file.path
  };

  res.status(200).json(fileInfo);
});

app.listen(3000, () => {
  console.log('服务器运行在3000端口');
});

文件验证处理

// 在前端脚本中添加验证
function validateVideo(file) {
  const validTypes = ['video/mp4', 'video/webm', 'video/ogg'];
  const maxSize = 100 * 1024 * 1024; // 100MB

  if (!validTypes.includes(file.type)) {
    alert('仅支持MP4、WebM和Ogg格式');
    return false;
  }

  if (file.size > maxSize) {
    alert('文件大小不能超过100MB');
    return false;
  }

  return true;
}

完整流程说明

  1. 用户通过文件选择器选取视频文件
  2. 前端验证文件类型和大小
  3. 使用FormData封装文件数据
  4. 通过XMLHttpRequest发送到服务器
  5. 服务器接收并保存文件
  6. 前端显示上传进度
  7. 完成上传后返回结果

注意事项

  • 生产环境需要添加更严格的安全验证
  • 考虑使用分片上传处理大文件
  • 实现文件重命名避免冲突
  • 添加CSRF保护机制
  • 考虑使用WebSocket实现实时进度反馈

扩展功能建议

  • 添加视频预览功能
  • 实现断点续传
  • 支持多文件同时上传
  • 添加视频元数据提取功能
  • 实现视频转码处理

js实现视频上传代码

标签: 上传代码
分享给朋友:

相关文章

代码雨实现vue

代码雨实现vue

实现代码雨效果(Vue版) 使用Vue实现代码雨效果可以通过Canvas绘制结合动画帧实现。以下是完整实现方案: 核心代码结构 <template> <div class="c…

vue实现附件上传

vue实现附件上传

文件上传的基本实现 在Vue中实现文件上传可以通过原生HTML的<input type="file">元素结合Vue的数据绑定和事件处理来完成。创建一个文件上传组件,监听change事件获…

vue代码抛硬币实现

vue代码抛硬币实现

实现思路 使用Vue.js实现抛硬币功能,可以通过随机生成0或1来模拟硬币的正反面,并通过动画效果增强用户体验。以下是具体实现步骤。 代码实现 创建一个Vue组件,包含一个按钮用于触发抛硬币动作…

vue实现excel上传预览

vue实现excel上传预览

vue实现excel上传预览的方法 使用xlsx库解析Excel文件 安装xlsx库来处理Excel文件: npm install xlsx 在Vue组件中引入xlsx库: import * as…

vue怎么实现视频上传

vue怎么实现视频上传

实现视频上传功能 在Vue中实现视频上传功能通常需要结合HTML5的<input type="file">元素和后端API。以下是实现方法: 前端实现 创建文件上传组件模板: <…

vue实现视频列表代码

vue实现视频列表代码

以下是一个基于Vue.js的视频列表实现示例,包含关键功能代码和说明: 视频列表基础实现 <template> <div class="video-list">…