当前位置: 首页 > news >正文

Node.js 中托管本地图片文件

请先学习
前端小白安装node、vue、Express、Electron及(Electron桌面端exe应用开发)
Electron结合vue3 打包

一、实现操作步骤

(一)、安装 Node.js 和 npm

确保你的系统上已经安装了 Node.js 和 npm。

(二)、创建项目文件夹

创建一个新的文件夹作为你的项目根目录。

(三)、初始化项目

在项目根目录中运行 npm init 来初始化一个新的 Node.js 项目。

(四)、安装 Express

安装 Express.js 框架和相关依赖。

(五)、编写服务器代码

创建一个服务器文件,如 app.js,并配置 Express 来托管本地盘上的图片。

二、具体实操

(一)、新建文件路径

G:\codevue>mkdir nodeimage

(二)、安装 Express

G:\codevue>cd nodeimage
npm install express --save

(三)、nodeimage新建app.js文件

1. 实现代码

const express = require('express');
const path = require('path');
const fs = require('fs');const app = express();// 配置托管 C 盘上的图片文件夹
const imageFolderPath = 'G:\\codevue\\images'; // 替换为你的图片文件夹路径// 创建中间件来处理图片文件的请求
app.use('/images', (req, res) => {const decodedPath = decodeURIComponent(req.path.replace('/images', ''));// 处理 URL 中的空格const urlWithSpacesReplaced = decodedPath.replace('/%20/g', '_'); // 假设文件名中的空格被替换成了下划线const imagePath = path.join(imageFolderPath, urlWithSpacesReplaced);
//   const imagePath = path.join(imageFolderPath, req.path.replace('/images', ''));// 检查文件是否存在fs.access(imagePath, fs.constants.F_OK, (err) => {if (err) {// 文件不存在,返回 404 错误res.status(404).send('File not found');} else {// 文件存在,读取文件并发送到客户端fs.readFile(imagePath, (err, data) => {if (err) {res.status(500).send('Error reading file');} else {// 设置正确的 MIME 类型const mimeType = getMimeType(imagePath);res.setHeader('Content-Type', mimeType);res.send(data);}});}});
});// 获取文件的 MIME 类型
function getMimeType(filePath) {const ext = path.extname(filePath).toLowerCase();const mimeTypes = {'.jpg': 'image/jpeg','.jpeg': 'image/jpeg','.png': 'image/png','.gif': 'image/gif',// 可以添加更多 MIME 类型};return mimeTypes[ext] || 'application/octet-stream';
}// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

2.情况说明

情况一:图片里面存在中文描述,需要增加解析中文。

const decodedPath = decodeURIComponent(req.path.replace('/images', ''));

情况二:图片里面存在特殊字符_,需要转化

const urlWithSpacesReplaced = decodedPath.replace('/%20/g', '_'); 

(四)、运行服务器

1.启动

# 执行 G:\codevue>cd nodeimage 路径下
node app.js

2.图片访问

本地路径

G:\codevue\images\default - 副本.png

浏览器访问

http://localhost:3000/images/default%20-%20%E5%89%AF%E6%9C%AC.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 代码随想录算法训练营day43|动态规划part10
  • 4 C 语言变量、printf 基本输出、scanf 基本输入、关键字、标识符及其命名规则
  • day36——homework
  • cocosUI多分辨率适配
  • 初心 | AIGC时代下的思想蜕变
  • Java 阿里云视频直播开发流程
  • C语言中10个字符串函数详解
  • 你对开源项目有什么期待?
  • 阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)
  • SSLVPN对比IPSECVPN安全设备的起源、发展、以及目前行业使用场景
  • KEEPALIVED是什么?以及实现各功能的配置实验
  • 一键换肤(Echarts 自定义主题)
  • 89. UE5 RPG 实现伤害 冷却 消耗技能描述
  • 堆(数据结构)
  • 【C语言篇】C语言常考及易错题整理DAY3
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 10个确保微服务与容器安全的最佳实践
  • create-react-app项目添加less配置
  • css的样式优先级
  • Mithril.js 入门介绍
  • Vue官网教程学习过程中值得记录的一些事情
  • 对象引论
  • 仿天猫超市收藏抛物线动画工具库
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 今年的LC3大会没了?
  • 微服务入门【系列视频课程】
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 用mpvue开发微信小程序
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​secrets --- 生成管理密码的安全随机数​
  • ## 1.3.Git命令
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #if等命令的学习
  • #pragma data_seg 共享数据区(转)
  • ( 10 )MySQL中的外键
  • (04)odoo视图操作
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (回溯) LeetCode 46. 全排列
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net web项目 调用webService
  • // an array of int
  • @Autowired 和 @Resource 区别的补充说明与示例
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [<死锁专题>]
  • [2010-8-30]
  • [20150904]exp slow.txt
  • [20161101]rman备份与数据文件变化7.txt
  • [AIGC 大数据基础]hive浅谈
  • [AIGC] Redis基础命令集详细介绍
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]