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

下面是关于“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日

相关文章

  • 从零揭秘npm install的黑科技

    当我们执行 npm install 命令时,实际上发生了很多事情,这些事情涉及到Node.js的包管理、网络传输、依赖分析与解析等方面。本文将从这些方面介绍针对 npm install 核心机制的一些优化技巧,以帮助大家更好地理解这个过程,以及如何在实际开发中提高 npm install 的效率。 NPM的包管理 NPM执行 npm install 命令时,…

    node js 2023年6月8日
    00
  • Node.js实现断点续传

    关于Node.js实现断点续传的攻略,我会分成以下几个部分讲解。 1. 前置知识 在开始讲解Node.js实现断点续传之前,我们首先需要了解以下几个知识点: HTTP协议:断点续传的实现离不开HTTP协议,需要了解其基本原理和机制。 Range请求头:HTTP协议中用来实现断点续传的关键请求头,服务器可以通过这个请求头判断客户端所需要的数据范围。 fs模块:…

    node js 2023年6月8日
    00
  • 浅谈Node.js 沙箱环境

    浅谈Node.js 沙箱环境 什么是沙箱环境 沙箱环境是指在一个封闭的容器中运行代码,确保运行时环境是安全隔离的,不会对系统造成破坏,同时也确保运行的代码逻辑是正确的。沙箱环境通常被用于处理一些风险较大,逻辑复杂的代码场景,如在线编译器、测试环境等。 如何用Node.js实现沙箱环境 在Node.js中实现沙箱环境可以借助vm模块,该模块提供了一些API,可…

    node js 2023年6月8日
    00
  • Nodejs搭建多进程Web服务器实现过程

    Node.js是一个基于Chrome V8引擎运行JavaScript的开发平台,通过Node.js构建Web应用可以实现高并发、高可靠性,且易于开发和部署。本攻略旨在介绍如何使用Node.js搭建多进程Web服务器,以实现更高的并发量和更佳的性能表现。 一、多进程Web服务器的优劣 多进程Web服务器的优势在于多进程之间可以相互独立,互不干扰,可以有效地充…

    node js 2023年6月8日
    00
  • JS模板编译的实现详情

    JS模板编译是前端开发中非常重要的一部分,它可以实现页面数据和UI的分离以及提高渲染速度。本文将从以下几个方面详细讲解JS模板编译的实现详情。 什么是JS模板编译? JS模板编译是一种将HTML模板中的数据和逻辑转换为可执行的JavaScript函数的过程。在运行时,编译后的模板可以通过传入数据,并在浏览器中运行,生成最终的HTML内容。 实现JS模板编译的…

    node js 2023年6月8日
    00
  • 详解使用Typescript开发node.js项目(简单的环境配置)

    作为网站的作者,关于“详解使用Typescript开发node.js项目(简单的环境配置)”的攻略,我列出以下内容进行讲解: 环境准备 在使用Typescript开发node.js项目之前,我们需要先进行环境的准备。 安装node.js环境:Typescript需要在node.js环境下运行,所以我们需要先安装node.js。可以在node.js官网http…

    node js 2023年6月8日
    00
  • NodeJS自定义模块写法(详解)

    NodeJS是一种使用JavaScript编写服务器端应用程序的平台。开发者可以使用NodeJS扩展自己的项目,并编写自定义模块来提高应用的可复用性和可维护性。 本文将介绍如何编写NodeJS自定义模块的详细攻略,主要包含以下内容: 模块的定义:使用module.exports对象或exports对象 module.exports对象和exports对象都是…

    node js 2023年6月8日
    00
  • JavaScript数据结构之单链表和循环链表

    JavaScript数据结构之单链表和循环链表 单链表和循环链表是数据结构中非常基础的两种链式结构,它们可以用JavaScript来实现。本文将详细讲解单链表和循环链表的实现过程和常见操作,且包含两条示例说明。 单链表 单链表是一种链式结构,每个节点包含数据和指向下一个节点的指针。单链表最后一个节点的指针指向NULL,表示链表的结尾。 实现单链表 在Java…

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