原生JS实现文件上传

下面是“原生JS实现文件上传”的详细攻略:

1. HTML结构

在HTML文件中添加一个表单,包含一个文件输入和一个提交按钮。

<form enctype="multipart/form-data">
  <input type="file" name="fileInput" id="fileInput">
  <input type="button" value="上传" onclick="uploadFile()">
</form>

2. JS代码实现

使用XMLHttpRequest对象完成文件上传。代码如下:

function uploadFile() {
  var fileInput = document.getElementById('fileInput');
  var file = fileInput.files[0];
  if (!file) return; // 没有选择文件

  var xhr = new XMLHttpRequest();
  // 处理上传进度
  xhr.upload.onprogress = function(event) {
    var percent = 100 * event.loaded / event.total;
    console.log('上传进度:' + percent + '%');
  };
  // 当上传完成时调用
  xhr.onload = function() {
    if (xhr.status === 200) {
      console.log('上传成功');
    }
  }
  xhr.onerror = function() {
    console.log('上传失败');
  }
  // 发送请求
  xhr.open('POST', '/upload', true);
  var formData = new FormData();
  formData.append('file', file);
  xhr.send(formData);
}

说明:
1. 获取input元素,并获取选中的文件。
2. 创建XMLHttpRequest对象。
3. 设置上传进度的回调函数。
4. 设置上传完成时的回调函数。
5. 设置上传失败时的回调函数。
6. 打开请求,设置POST方法和URL地址。
7. 创建FormData对象,将文件添加到表单数据中。
8. 发送请求。

3. 文件处理

文件上传完成后,服务器端需要接收文件并进行处理。这里给出Node.js的示例代码:

const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

//处理文件上传
app.post('/upload', upload.single('file'), function(req, res, next) {
  if (!req.file) {
    return res.status(400).send('请选择要上传的文件');
  }
  console.log(req.file.originalname + '上传成功');
  return res.send('文件上传成功');
});

app.listen(3000, function() {
  console.log('服务已启动,端口号:3000');
});

说明:
1. 引入express框架和multer文件上传中间件。
2. 创建multer的upload对象,指定文件保存的目录。
3. 创建路由处理文件上传请求。
4. 判断是否接收到文件。
5. 文件上传成功,将文件名打印到控制台。
6. 返回上传成功的响应信息。
7. 启动服务器并监听3000端口。

4. 示例说明

示例1

用户选择图片文件,上传到服务器。

输入为:一个图片文件,点击上传按钮。

输出为:上传成功,并将图片文件保存到服务器。

实现过程:
1. 在HTML页面中添加一个表单,包含一个文件输入和一个提交按钮。

<form enctype="multipart/form-data">
  <input type="file" name="fileInput" id="fileInput">
  <input type="button" value="上传" onclick="uploadFile()">
</form>
  1. 使用XMLHttpRequest对象完成文件上传。
function uploadFile() {
  var fileInput = document.getElementById('fileInput');
  var file = fileInput.files[0];
  if (!file) return; // 没有选择文件

  var xhr = new XMLHttpRequest();
  // 处理上传进度
  xhr.upload.onprogress = function(event) {
    var percent = 100 * event.loaded / event.total;
    console.log('上传进度:' + percent + '%');
  };
  // 当上传完成时调用
  xhr.onload = function() {
    if (xhr.status === 200) {
      console.log('上传成功');
    }
  }
  xhr.onerror = function() {
    console.log('上传失败');
  }
  // 发送请求
  xhr.open('POST', '/upload', true);
  var formData = new FormData();
  formData.append('file', file);
  xhr.send(formData);
}
  1. 服务器端处理文件上传,并返回上传成功的响应信息。
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

//处理文件上传
app.post('/upload', upload.single('file'), function(req, res, next) {
  if (!req.file) {
    return res.status(400).send('请选择要上传的文件');
  }
  console.log(req.file.originalname + '上传成功');
  return res.send('文件上传成功');
});

app.listen(3000, function() {
  console.log('服务已启动,端口号:3000');
});

示例2

用户选择文本文件,上传到服务器。

输入为:一个文本文件,点击上传按钮。

输出为:上传成功,并将文本文件保存到服务器。

实现过程:
1. 在HTML页面中添加一个表单,包含一个文件输入和一个提交按钮。

<form enctype="multipart/form-data">
  <input type="file" name="fileInput" id="fileInput">
  <input type="button" value="上传" onclick="uploadFile()">
</form>
  1. 使用XMLHttpRequest对象完成文件上传。
function uploadFile() {
  var fileInput = document.getElementById('fileInput');
  var file = fileInput.files[0];
  if (!file) return; // 没有选择文件

  var xhr = new XMLHttpRequest();
  // 处理上传进度
  xhr.upload.onprogress = function(event) {
    var percent = 100 * event.loaded / event.total;
    console.log('上传进度:' + percent + '%');
  };
  // 当上传完成时调用
  xhr.onload = function() {
    if (xhr.status === 200) {
      console.log('上传成功');
    }
  }
  xhr.onerror = function() {
    console.log('上传失败');
  }
  // 发送请求
  xhr.open('POST', '/upload', true);
  var formData = new FormData();
  formData.append('file', file);
  xhr.send(formData);
}
  1. 服务器端处理文件上传,并返回上传成功的响应信息。
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

//处理文件上传
app.post('/upload', upload.single('file'), function(req, res, next) {
  if (!req.file) {
    return res.status(400).send('请选择要上传的文件');
  }
  console.log(req.file.originalname + '上传成功');
  return res.send('文件上传成功');
});

app.listen(3000, function() {
  console.log('服务已启动,端口号:3000');
});

以上就是“原生JS实现文件上传”的完整攻略。希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS实现文件上传 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript 获取当前时间戳的代码

    获取当前时间戳是指获取当前时间与某一特定时间(一般为1970年1月1日00:00:00 UTC)之间的毫秒数。JavaScript提供了多种方法来获取当前时间戳。 Date对象的getTime()方法 在JavaScript中,Date对象提供了getTime()方法来获取当前时间戳。该方法返回自1970年1月1日00:00:00 UTC以来的毫秒数。以下是…

    JavaScript 2023年5月27日
    00
  • Javascript中的关键字和保留字整理

    Javascript中的关键字和保留字整理 在Javascript中,有些字是具有特殊含义的,这些字被称为关键字。而有些字没有特殊含义,但是被保留,这些字就被称为保留字。本文将介绍Javascript中的关键字和保留字,以及它们的具体用途。 关键字 Javascript中的关键字是指具有特殊含义的字,不可以用作变量名或函数名等标识符。下面列出Javascri…

    JavaScript 2023年5月18日
    00
  • 原生JavaScript实现刮刮乐

    关于“原生JavaScript实现刮刮乐”的攻略,我们可以按照以下步骤进行。 1. 准备工作 首先,我们需要在HTML文件中创建一个canvas元素,用于绘制刮去涂层后的图片。示例代码如下: <canvas id="scratch-card"></canvas> 接下来,我们需要准备两张图片。一张作为底部图片,一张…

    JavaScript 2023年6月10日
    00
  • JS对select控件option选项的增删改查示例代码

    下面我将为你详细讲解 “JS对select控件option选项的增删改查示例代码” 的完整攻略。 1. 获取select控件 首先,我们需要获取到 select 控件,然后使用 JavaScript 进行操作。获取 select 控件的方式如下: let selectElement = document.getElementById(‘selectId’);…

    JavaScript 2023年6月11日
    00
  • JavaScript中的异常处理

    JavaScript中的异常处理涉及到一些常用的语句和方法,包括try…catch语句、throw语句、Error对象等。它的作用是在运行过程中捕获和处理一些未预料到的错误或异常,防止程序因此崩溃。下面就对JavaScript中的异常处理进行详细讲解。 异常及其分类 在JavaScript中,异常指的是在程序执行过程中发生的错误或意外情况。常见的异常类型…

    JavaScript 2023年5月27日
    00
  • JavaScript 学习笔记(十四) 正则表达式

    JavaScript 学习笔记(十四) 正则表达式 什么是正则表达式 正则表达式是一种可以匹配文本片段的模式,它是由一个或多个字符和元字符组成的。在 JavaScript 中,正则表达式是由 RegExp 对象表示的。 正则表达式语法 元字符 元字符是正则表达式中具有特殊意义的字符,包括以下元字符: . : 匹配除 \n 外的任意字符。 [] : 匹配括号内…

    JavaScript 2023年5月28日
    00
  • Javascript 基础—Ajax入门必看

    Javascript 基础—Ajax入门必看 在前端开发中,Ajax技术是非常重要的一种技术,它可以实现网页异步请求数据,使网页看起来更流畅,用户体验更好。本文将为大家介绍Ajax的基础知识和简单应用,帮助初学者了解Ajax的原理和用法。 什么是Ajax? Ajax(Asynchronous JavaScript and XML)指的是一种网页异步请求数…

    JavaScript 2023年6月10日
    00
  • 详解angular中通过$location获取路径(参数)的写法

    下面是详解angular中通过$location获取路径(参数)的完整攻略。 一、使用 $location 对象获取路径 在 AngularJS 中,$location 对象用于获取当前 URL 中的路径、搜索、哈希和主机等信息。为了使用 $location 对象,需要将其注入到需要使用的控制器、服务或指令之中。 例如,在控制器中使用 $location 获…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部