Egg框架搭建后端服务【6】- 上传图片和图片回显

2024-01-25 22:52

本文主要是介绍Egg框架搭建后端服务【6】- 上传图片和图片回显,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求

博客系统翻新,需要上传图片的功能,本来想着一起把上传文件做上的,但是目前没太大用处,所以先做一个上传图片。

开发

前端

前端主要是通过 <input type=‘file’ /> 调起图片选择,将选中的图片以 formdata 的方式发送出去。

export function uploadImage(imageFormData, callback) {return request({url: '/upload',method: 'post',data: imageFormData,headers: {'Content-Type': 'multipart/form-data','X-Requested-With': 'XMLHttpRequest'},onUploadProgress(progressEvent) {if (callback) {callback(progressEvent)}}})
} 

server

Node.js 中自带了文件操作的 API,虽然早期非常难用,但是 Node v10 版本以后的还可以。

重点使用的是 fs.promise 的一系列 API。

将文件直接保存到 app/public 下,页面端可以通过反向代理后台接口 127.0.0.1:7002/public 直接获取到文件。

async upload() {const {ctx, app} = this;const fileData = ctx.request.files[0];// 获取当前日期const activeDate = ctx.helper.getNowDate();const uploadFilePath = path.join(__dirname, '../public/' + activeDate + '/');const file = await fsPromises.readFile(fileData.filepath);// 创建日期文件夹if (!fs.existsSync(uploadFilePath)) {await fsPromises.mkdir(uploadFilePath, {recursive: false});}// 生成服务端文件名const newFileName = ctx.helper.snowflakeId() + '.' + ctx.helper.getFileSuffix(fileData.filename);const serverFilePath = uploadFilePath + newFileName;// 保存文件await fsPromises.writeFile(serverFilePath, file);ctx.status = 200;ctx.body = {code: 200,success: true,data: {name: fileData.filename,url: 'http://' + ctx.host + '/public/' + activeDate + '/' + newFileName,},msg: '上传成功',show: true}
}

总结

上传图片的整个过程还是比较顺利的,但是需要注意的是,这里上传文件没有加上中途校验,存在一定的安全风险和隐患。

为了便于文件查阅,加上了按照日期分文件夹存储。

另外对于大文件的上传这里也并没有涉及,断点续传等高阶的内容也没有添加,仅仅是最基础的上传操作。

这篇关于Egg框架搭建后端服务【6】- 上传图片和图片回显的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644875

相关文章

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

java对接Pinata上传文件到IPFS全过程

《java对接Pinata上传文件到IPFS全过程》本文详细介绍了如何使用PinataAPI将文件上传到IPFS网络,首先登录Pinata官网并生成JWT令牌,然后在项目中导入OkHttp依赖并编写代... 目录1.登录2.生成令牌3.导入依赖4.编写代码5.调用接口调试China编程代码总结Pinata调用AP

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他