node文件上传功能简易实现代码

yizhihongxing

这里是"node文件上传功能简易实现代码"的完整攻略。

1. 确认需求和环境

确认需要实现的功能是文件上传,并且需要选择上传文件的界面和上传后的文件存储位置。需要使用Node.js运行环境和一些必要的npm包,如express和multer。

2. 安装必要的npm包

npm install express multer --save

multer 是一个 Node.js 中间件,用来处理文件上传,同时配合 express 使用更加方便。

3. 创建项目文件结构

mkdir file-upload
cd file-upload
touch app.js package.json
mkdir public
cd public
mkdir uploads
cd ..

在文件夹“public”下创建一个子文件夹“uploads”,用于存储上传的文件。

4. 编写代码

app.js

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

const app = express();

// 指定上传文件的存储路径
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'public/uploads');
    },
    filename: function (req, file, cb) {
        cb(null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`);
    }
});

// 创建 multer 实例
const upload = multer({ storage: storage });

// 为文件上传界面提供路由
app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'public/index.html'));
});

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

// 启动服务
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));

public/index.html

<!DOCTYPE html>
<html>
<head>
    <title>文件上传测试</title>
</head>
<body>
    <h1>文件上传测试</h1>
    <form method="POST" action="/upload" enctype="multipart/form-data">
        <div>
            <label for="myFile">请选择上传文件:</label>
            <input type="file" name="myFile" id="myFile">
        </div>
        <button type="submit">上传</button>
    </form>
</body>
</html>

5. 运行测试

在终端输入以下命令,启动服务器:

node app.js

在浏览器中访问以下地址:

http://localhost:3000/

在文件选择框中选择一个文件,并点击“上传”按钮。上传完成后会显示“上传成功!”。

示例1:基本上传文件示例

const express = require('express');  
const multer = require('multer');  
const app = express();  
//需要配置上传文件的路径和上传文件size  
const upload = multer({ dest: 'upload' ,limits: { fileSize: 50*1024 }});  

app.get('/', function (req, res) {  
    res.sendfile('index.html');  
});  

app.post('/upload', upload.single('inputFile') ,function(req, res, next){  
    console.log(req.file);  //打印上传的文件信息

    //设置响应类型及编码,防止乱码
    res.setHeader('Content-Type','text/html;charset=utf8');
    res.end("文件上传成功:"+req.file.path);  
})  
app.listen(3000);  
console.log('文件上传服务器启动成功...');

示例2:实现多文件上传

const express = require('express');
const morgan = require('morgan');
const fs = require('fs');
const multer = require('multer');

const app = express();
const PORT = process.env.PORT || 3000;
const upload = multer({ dest: 'uploads/' });

// 读取上传文件夹里的文件及删除文件,然后把文件列表显示在页面上
app.get('/', (req, res) => {
    fs.readdir(upload.dest, (err, files) => {
        if (err) throw err;
        const content = files.map(file =>
            `<li><a href="/uploads/${file}">${file}</a>
                <form action="/delete" method="post">
                    <button name="filename" value="${file}">删除</button>
                </form>
            </li>`).join('');
        res.send(`<ul>${content}</ul><br>
            <form action="/upload" method="post" enctype="multipart/form-data">
                <input type="file" name="uploadedFile" multiple>
                <button type="submit">上传</button>
            </form>`);
    });
});

// 上传文件到uploads文件夹
app.post('/upload', upload.array('uploadedFile', 10), (req, res) => {
    res.redirect('/');
});

// 删除上传文件夹里的文件
app.post('/delete', (req, res) => {
    fs.unlink(`uploads/${req.body.filename}`, (err) => {
        if (err) throw err;
        res.redirect('/');
    });
});

app.use(morgan('dev')); 
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));

以上为实现“node文件上传功能简易实现代码”的完整攻略,如果还有不明确的地方,可以提出来向我询问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node文件上传功能简易实现代码 - Python技术站

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

相关文章

  • Node.js中DNS模块学习总结

    Node.js中DNS模块学习总结 DNS模块介绍 DNS 是 Domain Name System 的缩写,翻译为“域名系统”,它是将域名转换为 IP 地址的系统。在 Node.js 中提供了 DNS 模块来处理与域名相关的功能。 DNS 模块的使用方法 引入 DNS 模块 javascript const dns = require(‘dns’); 解析…

    node js 2023年6月8日
    00
  • nodejs用gulp管理前端文件方法

    使用nodejs来管理前端文件时,常用的工具之一是gulp,它可以自动化构建前端代码,提高开发效率。以下是使用gulp管理前端文件的完整攻略: 第一步:安装nodejs和gulp 在使用gulp前,需要先安装nodejs。可以在官网上下载安装包:https://nodejs.org/en/。 安装完nodejs后,就可以在命令行终端中使用npm命令安装gul…

    node js 2023年6月8日
    00
  • Node.js + express实现上传大文件的方法分析【图片、文本文件】

    下面我将为你详细讲解“Node.js + express实现上传大文件的方法分析【图片、文本文件】”的完整攻略。 一、背景介绍 在web开发中,经常会需要上传大文件,例如图片、文本文件等,Node.js提供了处理文件上传的模块,其中最常用的就是multer中间件。multer中间件可以让我们轻松处理上传文件时产生的数据,同时也支持客户端上传多个文件。下面我将…

    node js 2023年6月8日
    00
  • Node.js基础入门之缓存区与文件操作详解

    《Node.js基础入门之缓存区与文件操作详解》是一篇介绍Node.js中缓存区和文件操作的基础内容的教程。本篇攻略主要分为以下几部分: Node.js中的缓存区是什么?如何使用缓存区? Node.js中的文件操作是什么?如何读写文件? 两条示例说明 1.Node.js中的缓存区 1.1 什么是缓存区? 在Node.js中,缓存区指代的是一个用于临时存储数据…

    node js 2023年6月8日
    00
  • 基于d3.js/neovis.js/neod3.js实现链接neo4j图形数据库的图像化显示功能

    实现链接neo4j图形数据库的图像化显示功能可以利用d3.js/neovis.js/neod3.js来完成。下面是详细的攻略。 步骤1:准备工作 在开始实现前,首先需要完成以下准备工作。 安装Neo4j数据库 在官网上下载并安装Neo4j数据库,并在登录后创建一个数据库。 安装d3.js/neovis.js/neod3.js 这三个库都可以用来实现Neo4j…

    node js 2023年6月8日
    00
  • 教你30秒发布一个TypeScript包到NPM的方法步骤

    创建 NPM 账号 首先,你需要在 NPM 官网注册一个账号。注册账号很简单,只需要填写几个基本信息即可。若你已有账号,请跳过此步。 初始化工程 创建工程文件夹,进入此文件夹,初始化工程: npm init (在终端输入该命令后,按照提示输入参数) 安装 TypeScript 在终端输入以下命令: npm install typescript –save-…

    node js 2023年6月9日
    00
  • JavaScript二叉树及各种遍历算法详情

    JavaScript二叉树及各种遍历算法详情 什么是二叉树 二叉树是一种树形数据结构,每个节点最多拥有两个子节点。根据节点的位置分为根节点、左子节点和右子节点。 二叉树的遍历方式 常用的二叉树遍历算法分为三种:前序遍历、中序遍历和后序遍历。 前序遍历 前序遍历是指先访问当前节点,然后按照左子树-右子树的顺序遍历所有子节点。 下面是一段前序遍历的示例代码: f…

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

    下面是关于“node.js中的http.response.write方法使用说明”的完整攻略: 简介 在 Node.js 中,我们可以使用 http 模块来搭建一个简单的 Web 服务器。其中,http.createServer() 函数可以用来创建一个服务器实例,而 http.ServerResponse 对象中的 write() 方法可以用来向客户端发送…

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