首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
如何在Ubuntu中用Node.js处理文件上传

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

热心网友
95
转载
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测试工具,向https://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。

相关攻略

Ubuntu Apache怎样防止攻击
网络安全
Ubuntu Apache怎样防止攻击

要保护Ubuntu上的Apache服务器免受攻击,可以采取以下几种措施 想让你的Ubuntu Apache服务器固若金汤?其实没那么复杂,关键在于把几道基础防线扎牢。下面这套组合拳,能帮你有效抵御大部分常见的网络攻击。 防火墙配置:守好第一道门 防火墙是服务器的看门人,配置得当能挡掉大量不必要的麻烦

热心网友
04.23
ubuntu syslog怎么加密
网络安全
ubuntu syslog怎么加密

在Ubuntu系统中实现Syslog加密传输 在运维和安全管理中,syslog日志的明文传输一直是个潜在的风险点。好消息是,通过加密传输,我们可以有效保护日志数据在传输过程中的机密性和完整性。下面就来详细拆解一下,在Ubuntu系统上为syslog穿上“加密外衣”的几种主流方法。 1 使用Sysl

热心网友
04.23
Ubuntu VNC如何使用加密连接
网络安全
Ubuntu VNC如何使用加密连接

在Ubuntu上为VNC连接加上“安全锁”:SSH隧道加密指南 直接通过VNC远程连接Ubuntu桌面,虽然方便,但让数据在网络上“裸奔”总归让人不放心。别担心,有个既经典又可靠的方法能为这条通道加上一把“安全锁”——那就是利用SSH隧道对连接进行加密。下面就来详细拆解整个设置过程。 第一步:安装V

热心网友
04.23
Ubuntu VNC如何启用加密连接
网络安全
Ubuntu VNC如何启用加密连接

在Ubuntu上为VNC连接加上“安全锁”:启用加密的完整指南 直接暴露在公网上的VNC连接,无异于在“裸奔”。数据在传输过程中一旦被截获,后果不堪设想。好在,我们可以通过启用SSL TLS加密,为这条远程通道加上一把可靠的“安全锁”。下面,我们就来聊聊在Ubuntu系统上,如何为两种主流的VNC服

热心网友
04.23
Ubuntu Syslog如何实现日志加密
网络安全
Ubuntu Syslog如何实现日志加密

在Ubuntu系统中实现Syslog日志加密 在数据安全日益重要的今天,系统日志的明文存储和传输已经难以满足高安全级别的需求。好在,为Ubuntu系统中的Syslog日志加上“加密锁”并非难事,我们有好几种成熟、可靠的方案可以选择。下面就来详细聊聊这些方法。 方法一:使用rsyslog和GnuPG

热心网友
04.23

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

TripMate
AI
TripMate

TripMate是什么 规划一次完美的旅行,最磨人的往往是前期的信息海选和行程拼图。现在,一款名为TripMate的AI旅行助手,正试图把我们从这种繁琐中解放出来。简单来说,它是一个由人工智能驱动的个人旅行规划工具,核心目标就一个:让个性化的行程规划变得又快又省心。用户不必再在各种攻略网站间反复横跳

热心网友
04.23
Artwo
AI
Artwo

Artwo是什么 浏览器标签页多到能开火车,收藏夹杂乱得像毛线球——这大概是每个深度上网冲浪者的日常痛点。Artwo的出现,正是为了终结这种混乱。这款工具的核心,是将AI的智能与网页资源管理深度结合,帮你把散落各处的网页信息,整理成井井有条的知识库。它不仅仅是个高级书签管理器,更像是一个能理解你需求

热心网友
04.23
Best AI Jobs
AI
Best AI Jobs

Best AI Jobs是什么 当你琢磨着在人工智能领域找份新工作时,面对海量却不精准的招聘信息,是不是常常感到头疼?这时候,一个专业的垂直平台就显得尤为重要了。Best AI Jobs,正是为此而生。它是一个专注于人工智能领域的职业搜索引擎,核心使命就是帮用户在全球范围内精准定位AI相关的职位。无

热心网友
04.23
FreeAiKit
AI
FreeAiKit

FreeAIKit是什么 当你听到“AI工具套件”时,脑子里会浮现什么?复杂的代码、难懂的术语,还是昂贵的订阅费?FreeAIKit的出现,可以说彻底打破了这些刻板印象。这个由Easy With AI打造的综合平台,目标非常明确:让AI变得触手可及。它集成了图像生成、市场营销、生产力提升等一系列工具

热心网友
04.23
WPS Office
AI
WPS Office

WPS Office是什么 提到办公软件,很多人的第一反应可能是微软的Office套件。但今天,我们得好好聊聊另一个重量级选手——WPS Office。它出自中国的金山软件,是一款功能完整的免费办公解决方案。简单来说,它集成了文档编辑、表格处理、幻灯片制作以及PDF工具于一体,旨在为用户提供一个流畅

热心网友
04.23