当前位置: 首页
编程语言
如何在Ubuntu中用Node.js处理文件上传

如何在Ubuntu中用Node.js处理文件上传

热心网友 时间:2026-04-23
转载

在Ubuntu中使用Node.js处理文件上传

想在Ubuntu环境下用Node.js搞定文件上传?这事儿其实没想象中那么复杂。一个叫multer

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

如何在Ubuntu中用Node.js处理文件上传

下面,咱们就一步步来搭建这个文件上传服务。整个过程逻辑清晰,跟着做就行。

1. 环境准备与项目初始化

首先,你得确保系统里已经装好了Node.js和npm。如果还没装,直接去Node.js官网下载对应Ubuntu的版本安装就行,这是基础。

接下来,创建一个专门的项目文件夹,并在终端里进入这个目录。然后,用一个简单的命令初始化项目,生成package.json文件:

npm init -y

有了项目骨架,就该安装核心依赖了。这里我们需要两个包:创建Web服务的express,和处理文件上传的multer

npm install express multer

2. 构建核心应用逻辑

依赖装好后,在项目文件夹里创建一个app.js文件,这就是我们服务的主文件。把下面的代码放进去,每一部分都有其关键作用:

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

// 设置存储引擎
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now() + '-' + file.originalname);
  }
});

// 初始化上传
const upload = multer({
  storage: storage,
  limits: { fileSize: 10 * 1024 * 1024 }, // 限制文件大小为10MB
  fileFilter: function (req, file, cb) {
    checkFileType(file, cb);
  }
}).single('file'); // ‘file’是表单中的文件字段名称

// 检查文件类型
function checkFileType(file, cb) {
  // 允许的文件扩展名
  const filetypes = /jpeg|jpg|png|gif/;
  // 检查扩展名
  const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
  // 检查MIME类型
  const mimetype = filetypes.test(file.mimetype);

  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb('Error: Images Only!');
  }
}

// 路由
app.post('/upload', (req, res) => {
  upload(req, res, (err) => {
    if (err) {
      res.status(400).send({ message: err });
    } else {
      if (req.file == undefined) {
        res.status(400).send({ message: 'No File Selected!' });
      } else {
        res.send({
          message: 'File Uploaded!',
          file: `uploads/${req.file.filename}`
        });
      }
    }
  });
});

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

这段代码干了这么几件关键事:定义了文件存到哪、怎么命名;限制了只能上传10MB以内的图片;并设置了一个/upload接口来接收文件。

3. 创建存储目录并启动服务

代码里指定了文件要存到uploads文件夹,所以你得在项目根目录下手动创建这个文件夹,不然程序会报错找不到路径。

最后,在终端里运行下面这条命令,你的文件上传服务就正式启动了:

node app.js

4. 测试上传功能

服务跑起来之后,怎么验证它好不好使呢?很简单,拿Postman或者任何你顺手的API测试工具,向http://localhost:3000/upload发送一个POST请求。

这里有个细节必须注意:请求的Content-Type需要设置为multipart/form-data,并且表单里文件字段的名称必须和我们代码中定义的一致,也就是file。设置对了,你就能收到“File Uploaded!”的成功响应,并且文件已经乖乖躺在uploads文件夹里了。

至此,一个具备基本文件类型检查、大小限制和自定义存储功能的Node.js上传服务,就已经在Ubuntu上搭建完成了。你可以在此基础上,继续扩展错误处理、文件预览等更多高级功能。

来源:https://www.yisu.com/ask/22586628.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
CPUInfo对系统性能有何影响

CPUInfo对系统性能有何影响

CPUInfo对系统性能的影响 核心结论 先说一个核心判断:Linux 系统中的 CPUInfo(典型代表是 proc cpuinfo 文件和 lscpu 命令)本身并不直接提升或降低性能。它的角色,更像是一位“硬件情报官”,只负责读取和展示 CPU 的详细信息与拓扑结构。那么它的价值何在?答案是

时间:2026-04-23 22:29
idea新窗口打开工程不生效问题及解决

idea新窗口打开工程不生效问题及解决

一、确保设置了 首先,你得确认这个选项已经勾选上。具体路径是:打开 IntelliJ IDEA 的设置,找到 Settings Preferences -> Appearance & Beha vior -> System Settings,然后确保 Open project in new wind

时间:2026-04-23 22:29
CentOS环境下Golang日志的最佳实践

CentOS环境下Golang日志的最佳实践

在CentOS环境下使用Golang进行日志记录的最佳实践 在CentOS服务器上部署Golang应用时,高效的日志管理是提升后期运维效率与系统可观测性的核心。一套设计良好的日志策略,能将问题排查从“大海捞针”转变为“精准定位”。本文将深入探讨在CentOS系统中,如何构建一套既高效又易于维护的Go

时间:2026-04-23 22:29
如何优化CentOS Java日志记录效率

如何优化CentOS Java日志记录效率

优化CentOS上Ja va应用程序的日志记录效率 在CentOS服务器上跑Ja va应用,日志记录效率上不去,性能瓶颈往往就藏在这里。别担心,这事儿有章可循。下面这几个关键策略和具体步骤,能帮你系统性地解决问题。 1 选择高效的日志框架 工欲善其事,必先利其器。选对日志框架,是提升效率的第一步。

时间:2026-04-23 22:28
Ubuntu安装PySide6开发桌面应用实践

Ubuntu安装PySide6开发桌面应用实践

一、引言 最近在对接大模型测试任务时,需要开发一个Python桌面应用。于是,就有了这篇在WSL2的Ubuntu环境下配置PySide6开发环境的实战记录。 二、Ubuntu非桌面端安装PySide6 理想情况下,在Ubuntu桌面系统里直接安装PySide6,再配上VSCode就能开干。但手头只有

时间:2026-04-23 22:28
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程