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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构