nodejs 图片预览和上传的示例代码

yizhihongxing

下面是关于“nodejs 图片预览和上传”的完整攻略。

步骤一:安装依赖

在开始编写nodejs图片上传和预览的代码前,需要安装必要的依赖项。首先进入项目文件夹,打开命令行工具,执行以下命令:

npm init -y

这个命令会自动生成一个package.json文件,保存项目的信息和依赖项。接下来,安装expressmulter依赖包:

npm install express multer --save

其中,express是nodejs开发框架,用于处理http请求和构建web应用程序;multer是一个node.js中间件,用于处理multipart/form-data类型的数据(主要用于文件上传)。

步骤二:编写图片上传和预览代码

1、上传图片的代码

接下来,我们将图片上传和预览的代码拆分成两个文件:app.jsupload.js。首先是图片上传的代码。

app.js中,编写以下代码:

const express = require('express');
const multer = require('multer');
const upload = require('./upload');

const app = express();

app.use(express.static('public')); // 静态文件路由
app.use(express.json()); // 解析json格式的请求体
app.use(express.urlencoded({ extended: true })); // 解析表单格式的请求体

app.post('/upload', upload.single('image'), (req, res) => {
  console.log(req.file);
  res.json({ message: '上传成功' });
});

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});

在这个文件中,我们引入了expressmulter依赖包,再引入upload模块。同时,我们配置了express的静态文件路由和请求体解析器。

在处理图片上传的路由上,我们使用了upload.single('image')中间件,表示只处理读取名为image的单个文件。当上传完成后,服务器会返回一个json格式的消息,表示上传成功。

2、预览图片的代码

upload.js文件中,我们编写以下代码:

const multer = require('multer');

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

const fileFilter = (req, file, cb) => {
  if (file.mimetype.startsWith('image/')) {
    cb(null, true);
  } else {
    cb(new Error('文件类型不是图片类型'), false);
  }
};

const upload = multer({
  storage: storage,
  fileFilter: fileFilter,
  limits: { fileSize: 1024 * 1024 },
});

module.exports = upload;

这个文件中,我们将multer模块进行配置。我们设置了文件上传后的存储路径,文件名的生成方式(通过当前时间戳和原始文件名),还设置了文件的过滤器,只允许上传图片类型的文件。同时,我们还设置了文件的大小限制为1MB。

步骤三:前端页面编写

我们接下来将制作前端页面上传图片,预览图片等功能,创建以下文件:

/public/index.html: 网站的首页,包含上传图片表单以及预览图片功能。

在这个HTML文件中,我们编写以下代码

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>图片上传预览示例</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <style>
    form {
      margin: 16px;
      padding: 32px;
      border: 2px dashed #ccc;
      text-align: center;
    }

    .preview {
      display: flex;
      flex-wrap: wrap;
    }

    .preview-item {
      margin: 8px;
    }

    .preview-image {
      max-width: 200px;
      max-height: 200px;
      object-fit: cover;
    }
  </style>
</head>

<body>
  <form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="image">
    <button type="submit">上传</button>
  </form>

  <h2>图片预览</h2>
  <div class="preview"></div>

  <script>
    $(document).ready(function () {
      $('form').submit(function (e) {
        e.preventDefault();
        $.ajax({
          url: '/upload',
          type: 'POST',
          data: new FormData(this),
          processData: false,
          contentType: false,
          success: function (data) {
            alert(data.message);
          },
        });
      });

      $('input[type="file"]').change(function (e) {
        $('.preview').empty();
        for (let i = 0; i < e.target.files.length; i++) {
          let file = e.target.files[i];
          let reader = new FileReader();
          reader.onload = function (e) {
            let html = `<div class="preview-item"><img class="preview-image" src="${e.target.result}"></div>`;
            $('.preview').append(html);
          };
          reader.readAsDataURL(file);
        }
      });
    });
  </script>
</body>

</html>

这个HTML文件中,我们在表单中添加了上传图片的文件选择器和上传按钮。当点击上传按钮时,会发送jQuery的ajax请求,将图片上传到/upload的路由上。

同时,在这个文件中我们还使用了jQuery编写了图片预览的功能。当用户选择图片文件时,我们使用FileReader读取文件并转成DataURL,再通过HTML元素展示出来。

步骤四:运行服务器

最后,我们可以运行服务器,打开网站首页index.html,上传图片并实现预览功能。

在命令行中输入以下命令可以启动服务器:

node app.js

这样就完成了一个基本的nodejs图片上传和预览的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs 图片预览和上传的示例代码 - Python技术站

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

相关文章

  • 详解基于node.js的脚手架工具开发经历

    详解基于node.js的脚手架工具开发经历 简介 脚手架工具,是一种常见的自动化开发工具,可以在快速启动和搭建项目的过程中,提高开发效率。本文将详细讲解使用node.js开发脚手架工具的过程,并提供两个示例说明。 脚手架工具开发步骤 步骤一:初始化工程 使用npm init命令创建一个新的node.js工程,并编写package.json文件。 npm in…

    node js 2023年6月8日
    00
  • NodeJS使用formidable实现文件上传

    下面是详细讲解“NodeJS使用formidable实现文件上传”的完整攻略: 什么是formidable? formidable是NodeJS的一个表单数据处理库,包括以下功能: 把上传的文件保存到本地文件系统中 转换HTTP请求中的表单数据为可读取的对象 限制上传文件的大小 安装formidable 安装formidable非常简单,只要在项目目录执行以…

    node js 2023年6月8日
    00
  • express中间件加载机制示例详解

    下面是“express中间件加载机制示例详解”的完整攻略,分成以下几个部分进行讲解: 1. 什么是Express中间件 Express中间件(Middleware)是指处理HTTP请求的函数。它是一个函数,它可以访问请求对象(req)、响应对象(res)、和web应用程序中处理请求响应循环流程中的下一个中间件函数(next)。通俗的理解就是在请求和响应之间进…

    node js 2023年6月8日
    00
  • node.js使用net模块创建服务器和客户端示例【基于TCP协议】

    下面是详细讲解“node.js使用net模块创建服务器和客户端示例【基于TCP协议】”的完整攻略: 一、net模块简介 Node.js中的net模块提供了基于TCP或IPC(进程间通信)协议的网络通信功能,包括创建服务器和客户端等功能。在这里主要介绍基于TCP协议的创建服务器和客户端。 二、创建TCP服务器 要创建一个TCP服务器,需要调用net模块的cre…

    node js 2023年6月8日
    00
  • NodeJS后端开发操作文件之读写文件

    下面是NodeJS后端开发操作文件之读写文件的完整攻略: 1. 读取文件内容 读取文件的时候,我们可以利用NodeJS中的fs模块。fs模块是NodeJS自带的文件系统模块,通过该模块我们可以实现对文件的读写操作。 打开文件的步骤如下: const fs = require(‘fs’) //定义要读取的文件路径 const filePath = ‘./exa…

    node js 2023年6月8日
    00
  • node.js实现http服务器与浏览器之间的内容缓存操作示例

    这是一个完整的node.js实现http服务器与浏览器之间的内容缓存操作示例的攻略: 什么是http缓存 HTTP缓存可以大大提高网站的访问速度,HTTP协议中定义了多种缓存方式,可以根据服务器返回的响应头来进行判断和使用,其中最常见的是浏览器缓存。当浏览器第一次访问Web页面时,它会将所有资源下载下来并缓存在本地,下次访问同一页面时,它只会下载被修改过的资…

    node js 2023年6月8日
    00
  • Electron 调用命令行(cmd)

    当我们使用Electron开发桌面应用时,有些操作需要调用命令行来完成,例如在Windows系统中打开文件资源管理器,或是调用一些第三方的命令行工具等。下面是使用Electron调用命令行的完整攻略: 步骤一:在Electron中使用Node.js的child_process模块 要在Electron中调用命令行,我们需要使用Node.js的child_pr…

    node js 2023年6月8日
    00
  • 在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程

    以下是在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序的完整攻略: 安装 Python 首先,你需要安装 Python。可以从Python官网下载最新版本的Python安装包,选择合适的版本并下载。 下载完成后,双击安装包,按照提示完成安装。 安装完成后,在命令行运行以下命令,验证Python是否安装成功: bash python -…

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