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

这里是"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调用脚本(python/shell)和系统命令

    下面是详细的攻略: node.js调用脚本(python/shell)和系统命令 Node.js可以执行本地命令行工具、调用Python或Shell脚本,以及调用像C++等其他编程语言编写的本地模块。 执行系统命令 Node.js可以轻松地执行本地命令行工具,如ls、rm、mkdir等。使用Node.js的child_process模块可以实现该功能。 以下…

    node js 2023年6月8日
    00
  • 详解Node.js如何开发命令行工具

    下面是详细讲解“详解Node.js如何开发命令行工具”的完整攻略。 什么是命令行工具? 命令行工具是一种与用户通过命令行交互的程序,通常以命令行参数的形式接收输入,并将解析后的参数进行处理。 常见的命令行工具有Git、npm等,而这些工具均是基于Node.js开发。 Node.js如何开发命令行工具? 以下是Node.js开发命令行工具的完整攻略: 步骤1:…

    node js 2023年6月8日
    00
  • React+EggJs实现断点续传的示例代码

    下面是对实现”React+EggJs实现断点续传的示例代码”的完整攻略。 简介 断点续传是指在上传或下载大文件时,当网络连接中断或者出现其他问题时,可以保证文件的上传或下载不会从头开始,而是从中断的位置继续进行。 本文将通过React + Egg JS框架实现断点续传功能,具体实现过程会在下面的代码示例中讲解。 技术栈 前端:React 后端:Egg JS(…

    node js 2023年6月8日
    00
  • Node.js 制作实时多人游戏框架

    Node.js是一款基于V8引擎的JavaScript运行环境,Node.js的出现极大地推动了JavaScript在后端开发领域的普及和应用。下面,我将使用Markdown格式为大家讲解如何使用Node.js制作实时多人游戏框架。 环境搭建 首先,我们需要_node.js_的安装环境。这里以Mac OS X系统为例进行安装。在终端中输入以下命令进行安装: …

    node js 2023年6月8日
    00
  • node.js读取命令行参数详解

    Node.js读取命令行参数详解 在Node.js中,我们可以通过命令行输入参数来执行不同的功能。本文就来详细讲解如何在Node.js中读取命令行参数。 基础知识 使用Node.js的process对象可以获得所有与进程相关的信息,包括命令行参数,常用的方法有: process.argv:返回一个数组,包含命令行参数,第一个元素是Node.js程序的路径,第…

    node js 2023年6月8日
    00
  • 基于node下的http小爬虫的示例代码

    下面是基于Node.js的HTTP小爬虫的完整攻略。 什么是小爬虫? 小爬虫是指相对于大型搜索引擎的全网爬虫而言,实现爬取网站数据的一种较小规模的爬虫程序。小爬虫一般是为了实现对某个特定网站或特定需求的数据抓取而存在。 Node.js中的HTTP模块 Node.js的核心模块之一是HTTP模块。它提供了一系列API,用于处理HTTP请求、响应和连接。我们可以…

    node js 2023年6月8日
    00
  • 如何在node的express中使用socket.io

    想要在Node的Express中使用Socket.io,需要遵循以下步骤: 安装socket.io和express模块: npm install –save socket.io express 启用服务器和Socket.io: const express = require(‘express’); const http = require(‘http’);…

    node js 2023年6月8日
    00
  • Windows下使用Nodejs运行js的方法

    Windows下使用Nodejs运行js的方法 Nodejs是一个基于Chrome V8引擎的Javascript运行环境,能够让Javascript运行于服务器端。在Windows系统下,我们可以通过安装Nodejs来运行js文件。 安装Nodejs 打开Nodejs官网:https://nodejs.org 点击“下载”,下载适合自己操作系统版本的安装包…

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