node.js实现多图片上传实例

具体的攻略如下:

1. 安装依赖

在开始项目前,需要先安装所需的依赖:

npm install express multer

其中,express是Node.js的Web框架,用于创建服务器;multer是Node.js的一个中间件,用于处理HTTP上传请求,支持多文件上传。

2. 编写HTML页面

需要先编写一个HTML页面,用于展示表单和上传控件。以下为一个示例页面:

<!DOCTYPE html>
<html>
<head>
    <title>多图片上传</title>
</head>
<body>
    <h1>多图片上传示例</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple><br><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

其中,form标签的action指向服务器的上传接口,enctype属性指定上传的数据类型为multipart/form-data,支持多文件上传。

3. 编写Node.js代码

在编写Node.js代码前,需要先引入所需的库:

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

其中,express和multer在第1步中已经安装,只需引入即可。

3.1 配置multer

multer需要配置上传文件的保存路径和文件名,以及限制文件大小的值等参数。以下为一些常用的配置:

// 配置保存路径和文件名,以及文件大小的限制
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        // 保存的路径为 uploads/
        cb(null, 'uploads/')
    },
    filename: function (req, file, cb) {
        // 文件的名字为原始文件名和当前时间戳,以防重名
        cb(null, file.originalname + '-' + Date.now())
    },
    limits: {
        // 限制文件大小为5MB
        fileSize: 5 * 1024 * 1024
    }
});

3.2 配置上传接口

上传接口需要先处理静态资源,即上传的文件,这可以通过express.static方法实现:

// 配置静态资源路径为/uploads
app.use('/uploads', express.static('uploads'));

处理上传请求时,首先要通过multer中间件处理上传的文件,通过req.files获取上传的文件对象。如果有多个文件,则使用数组形式访问。以下为处理上传请求的示例代码:

// 配置上传接口/upload
app.post('/upload', multer({ storage: storage }).array('file'), function (req, res, next) {
    // req.files是上传的文件对象
    console.log('上传的文件信息:', req.files);
    res.send('上传成功!');
});

其中,multer({ storage: storage }).array('file')表示使用multer中间件处理上传请求,使用array方法处理多文件上传,限定上传控件的name属性为file。

4. 运行代码

完成以上步骤,即可执行以下命令运行代码:

node app.js

其中,app.js为上述代码文件的名称。

示例1

下面是一个完整的Node.js代码示例:

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

// 静态资源路径
app.use('/uploads', express.static('uploads'));

// 配置上传文件信息
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname + '-' + Date.now())
    },
    limits: {
        fileSize: 5 * 1024 * 1024
    }
});

// 上传接口
app.post('/upload', multer({ storage: storage }).array('file'), function (req, res, next) {
    console.log('上传的文件信息:', req.files);
    res.send('上传成功!');
});

// 启动服务器
app.listen(port, () => {
    console.log(`服务器已启动:http://localhost:${port}/`);
});

示例2

以下为一个基于Express的完整示例代码,包括HTML页面和上传示例:

<!DOCTYPE html>
<html>
<head>
    <title>多图片上传</title>
</head>
<body>
    <h1>多图片上传示例</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple><br><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>
const express = require('express');
const multer  = require('multer');
const app = express();
const port = 3000;

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

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname + '-' + Date.now())
    },
    limits: {
        fileSize: 5 * 1024 * 1024
    }
});

app.post('/upload', multer({ storage: storage }).array('file'), function (req, res, next) {
    console.log('上传的文件信息:', req.files);
    res.send('上传成功!');
});

app.listen(port, () => {
    console.log(`服务器已启动:http://localhost:${port}/`);
});

在本示例中,HTML页面位于public目录下的index.html文件中,CSS和JavaScript文件也在该目录下。上传的文件将保存在uploads目录中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js实现多图片上传实例 - Python技术站

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

相关文章

  • 如何用nodejs搭建代理服务器

    下面是关于如何用Node.js搭建代理服务器的攻略。 简介 代理服务器是一种位于客户端与目标服务器之间的服务器,用于转发客户端请求,使得客户端能够通过代理服务器与目标服务器进行数据通信。通常代理服务器可以提供更快的速度、更高的安全性、过滤内容、缓存静态内容等诸多功能。Node.js作为目前最为流行的后端JavaScript技术,也可以利用其强大的网络库和Ja…

    node js 2023年6月8日
    00
  • 运行npm run dev报错的原因及解决

    运行 npm run dev 报错可能有多种原因,下面介绍几种常见的情况以及解决方法。 原因一:缺少依赖包 问题描述 运行 npm run dev 后,终端输出错误信息:Error: Cannot find module ‘xxx’,其中 xxx 代表缺少的依赖包。 解决方法 打开终端并进入项目根目录,运行以下命令: npm install –save x…

    node js 2023年6月8日
    00
  • Webpack5正式发布,有哪些新特性

    Webpack 5 正式发布, 有哪些新特性 Webpack 5 是目前最新版本的 Webpack,在 2020 年 10 月 10 日正式发布。相对于 Webpack 4,Webpack 5 带来了许多重要改进,并增加了一些新特性。 下面是 Webpack 5 的一些新特性: 1. 更快的构建速度 Webpack 5 明显提高了构建速度,在代码的编译和 B…

    node js 2023年6月8日
    00
  • Nodejs 发布自己的npm包并制作成命令行工具的实例讲解

    下面将详细讲解如何发布自己的npm包并制作成命令行工具的步骤: 准备工作 安装Node.js环境 注册npm账号或者使用已有的npm账号 发布npm包 创建一个文件夹,命名为my-package(名字可以自己定义)。 在my-package文件夹下创建一个package.json文件。 { "name": "my-package…

    node js 2023年6月8日
    00
  • node.js中的http.createClient方法使用说明

    一、http.createClient方法概述http.createClient()方法是Node.js标准库中提供的一个底层HTTP客户端。该函数返回一个新的HTTP客户端对象。该方法已经被弃用,建议使用http.request代替,但仍可以在旧的代码中使用。 二、使用方法http.createClient(port, host)方法接受两个参数,分别是端…

    node js 2023年6月8日
    00
  • 调试Node.JS的辅助工具(NodeWatcher)

    调试是程序开发中不可或缺的一环,Node.js作为JavaScript语言的服务器端开发平台,也有一些辅助工具用来进行调试。其中,NodeWatcher是一款比较实用的辅助工具,它可以监测服务器端文件的变化,从而实现了热重载,方便程序员进行调试和开发。 安装NodeWatcher 在使用NodeWatcher前,需要先安装它的相关依赖。首先,需要安装Node…

    node js 2023年6月8日
    00
  • Typescript tsconfig.json的配置详情

    当我们使用Typescript进行开发时,需要通过tsconfig.json文件来配置编译器的行为。tsconfig.json是一个JSON文件,通过它可以配置Typescript编译器进行代码的编译及输出。下面来讲解”Typescript tsconfig.json的配置详情”,其中包括编译选项、模块选项、引用选项、源文件选项等内容。 编译选项 编译选项是…

    node js 2023年6月8日
    00
  • Node.js中的async 和 await 关键字微任务和宏任务

    Node.js中的async和await关键字是用于处理异步操作的新特性。这两个关键字实际上是基于Promise的封装,它们能够使得代码看起来更加简洁易懂,同时也能解决回调地狱等问题。async和await在执行过程中会产生微任务和宏任务,这两个概念对于理解异步编程非常重要。 async和await的基本用法 async函数是ES7中的新语法,用来表示一个异…

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