基于nodejs+express(4.x+)实现文件上传功能

yizhihongxing

实现文件上传功能是Web开发中常见的需求之一。本文档将详细讲解如何使用nodejs+express(4.x+)实现文件上传功能。

1. 安装express(4.x+)和multer

在开始使用express和multer之前,需要先确保它们已经安装在你的电脑上。

可以通过npm来进行安装:

npm install express multer --save

2. 添加文件上传路由

在Express应用程序中,我们需要添加一个处理文件上传请求的路由。这个路由将处理从客户端发送过来的文件上传请求,并将文件保存到我们指定的文件夹中。

示例代码如下:

const express = require('express');
const router = express.Router();
const multer = require('multer');

// 上传文件至指定文件夹,重命名为原始文件名
const storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads/');
  },
  filename: function (req, file, callback) {
    callback(null, file.originalname);
  }
});

const upload = multer({ storage });

// 处理文件上传请求
router.post('/upload', upload.single('file'), (req, res) => {
  res.send('上传成功!');
});

module.exports = router;

代码中定义了一个处理文件上传请求的路由,路由的路径为'/upload'。

在路由中,我们使用multer来创建一个上传存储对象storage,并使用该存储对象创建一个multer中间件upload。最后使用路由中的回调函数处理文件上传请求,中间件upload.single('file') 将文件存储至指定文件夹中并重命名为原始文件名。

此处的'file'指的是客户端上传文件的字段名。在实际代码中,应该根据客户端的实际情况修改参数。

3. 添加前端页面及相关代码

添加一个表单用来上传文件,并在表单中设置上传文件字段的名称。

示例代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>File Upload Form</title>
</head>
<body>
  <h3>上传文件</h3>
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
  </form>
</body>
</html>

4. 运行和测试文件上传功能

将以上代码保存在合适的位置并启动应用程序。在浏览器中访问上传表单页面,选择一个文件并提交,应该会出现上传成功提示。

示例代码如下:

const express = require('express');
const app = express();
const fileUpload = require('./routes/fileUpload');

app.use(express.static('public'));

app.use('/', fileUpload);

const server = app.listen(3000, function() {
    console.log('Server listening on port ' + server.address().port);
});

5. 实际应用:上传图片并展示

下面实现一个实际应用场景,上传一张图片并展示它。

1、将图片存储到服务器上指定的目录中

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

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, './public/img');
    },
    filename: function(req, file, cb) {
        cb(null, `${Date.now()}-${file.originalname}`);
    }
});

const upload = multer({ storage });

app.post('/uploadImg', upload.single('image'), (req, res) => {
  res.send('上传成功!');
});

app.listen(3000, () => {
  console.log('server running at http://localhost:3000');
});

在上述代码中,实现将图片保存到服务器指定目录中的功能。storage中的destination属性定义了图片存储的目录,filename属性定义了如何给图片文件命名。

2、前端界面上传图片

前端界面可以使用HTML的form表单和input[type=file]元素实现文件上传,并使用XMLHttpRequest对象来提交文件到服务器上。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>上传图片</title>
</head>
<body>
    <form enctype="multipart/form-data">
        <input type="file" name="image" accept="image/*"/>
        <input type="button" value="上传" onclick="submitImg()"/>
    </form>

    <script>
      function submitImg() {
        var fd = new FormData();
        fd.append('image', document.getElementsByName('image')[0].files[0]);

        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
          }
        };

        xhr.open('POST', '/uploadImg', true);
        xhr.send(fd);
      }
    </script>
</body>
</html>

在以上代码中,我们使用FormData对象封装待上传的数据。FormData对象可以从一个form元素实例化,也可以直接使用其构造函数。

3、前端显示上传图片

前端界面可以通过image元素来显示上传的图片。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>展示图片</title>
</head>
<body>
    <h2>上传的图片:</h2>
    <img src="http://localhost:3000/img/test.jpg" alt="no image"/>
</body>
</html>

在以上示例代码中,用img元素来呈现上传的图片,src属性指向在服务器上保存的图片文件路径。

总结

使用nodejs+express(4.x+)实现文件上传功能的攻略:

  1. 安装express和multer模块
  2. 添加文件上传路由,使用multer处理文件上传请求
  3. 添加前端页面,设置上传文件字段的名称
  4. 运行和测试文件上传功能
  5. 实际应用:上传图片并展示

上述功能只是文件上传功能的基础,可以根据具体需求进行扩展和优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于nodejs+express(4.x+)实现文件上传功能 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 使用Node.js实现base64和png文件相互转换的方法

    下面是详细的讲解和示例。 Node.js实现base64和png文件相互转换的方法 什么是Base64和PNG文件? Base64是一种数据编码方式,可以将任意二进制数据编码成只包含64种字符的字符串。它的应用非常广泛,比如将图片或音频等多媒体数据嵌入到HTML、CSS或JavaScript等文本文件中。 PNG是一种常见的图片文件格式,使用无损压缩算法,具…

    node js 2023年6月8日
    00
  • Node.js API详解之 V8模块用法实例分析

    当谈到Node.js的API时,V8模块是一个重要的组件。V8模块提供了操作 JavaScript 代码的能力,并且是Node.js运行时的核心。 下面将会详细讲解V8模块的用法,包括如何使用V8模块来编写高效的代码和如何调试V8代码。 V8模块的基本用法 Node.js中通过V8模块来访问JavaScript引擎V8中的API。V8模块是Node.js中最…

    node js 2023年6月8日
    00
  • 基于Element的组件改造的树形选择器(树形下拉框)

    基于Element的组件改造的树形选择器(树形下拉框)的完整攻略如下: 准备工作 安装 Element UI。可以在项目中使用 npm 安装,安装命令为 npm i element-ui -S,也可以通过 CDN 引入。 引入相关的文件。在 HTML 文件中,需要引入 Element UI 的样式文件和 JS 文件,还需要引入一个自定义的 CSS 文件和一个…

    node js 2023年6月8日
    00
  • puppeteer实现html截图的示例代码

    下面是针对“puppeteer实现html截图的示例代码”的完整攻略: 一、前置准备 首先需要Node.js环境以及Puppeteer库,可以通过在终端中运行以下命令来安装Puppeteer: npm install puppeteer 安装完成后,我们就可以开始编写代码了。 二、实现代码 在Puppeteer中,我们可以使用page.screenshot(…

    node js 2023年6月8日
    00
  • Node.JS用纯JavaScript生成图片或滑块式验证码功能

    要使用Node.js生成图片或滑块式验证码,需要使用两个主要的库:canvas和svg-captcha。下面将详细介绍如何使用这两个库生成验证码。 安装所需库 首先,需要在终端中使用以下命令安装所需库: npm install canvas svg-captcha 生成普通图片验证码 步骤一:引用所需库 const { createCanvas, loadI…

    node js 2023年6月8日
    00
  • js AppendChild与insertBefore用法详细对比

    当我们要向HTML页面中增加新的元素节点时,可以使用JS的appendChild和insertBefore方法。两者都可以用于向一个父元素节点中添加一个子元素节点,但有些细节不同。下面是对比它们的用法的详细攻略。 使用appendChild方法 appendChild方法是用于在一个元素节点的子节点列表的末尾添加一个新的子元素节点。其语法如下: parent…

    node js 2023年6月8日
    00
  • JavaScript设计模式之单例模式原理与用法实例分析

    JavaScript设计模式之单例模式原理与用法实例分析 什么是单例模式? 单例模式是一种经典的设计模式,它保证一个类只有一个实例并提供一个全局的访问点。在JavaScript中,单例模式可以用于创建唯一的全局对象。 单例模式的应用场景 单例模式的应用场景非常广泛,例如: 管理页面中的全局状态,例如Vue.js中的store 缓存数据,例如浏览器中的loca…

    node js 2023年6月8日
    00
  • IDEA中配置运行node.js的完整过程

    下面是在IDEA中配置运行node.js的完整过程的详细攻略。 步骤一:安装Node.js插件 在开始配置Node.js的运行环境之前,我们需要先在IDEA中安装Node.js插件。具体操作步骤如下: 打开IDEA,进入“Settings”(Windows下位于File菜单下,Mac下位于IntelliJ IDEA菜单下)。 找到“Plugins”选项,点击…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部