以上是选择图片的代码,我想做一个书籍发布功能,里面包含书籍图片上传,但是我不会获取他的路径幷将他插入数据库
微信小程序如何上传图片到数据库,nodejs写的后台,用的egg框架
以上是选择图片的代码,我想做一个书籍发布功能,里面包含书籍图片上传,但是我不会获取他的路径幷将他插入数据库
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-showbo 2023-03-19 14:48关注
官网示例:https://eggjs.github.io/zh/guide/upload.html
小程序post发送文件,注意路由器router.js配置为post请求router.post('/baiduAI', controller.baiduAI.upload);
并且post会检查CSRF,需要配置config/config.default.js关闭CSRF检查,要么的自己写接口或者CSRF token一起发送
config.security = { // 关闭 csrf csrf: { enable: false, }, // 跨域白名单 domainWhiteList: [], };
控制器用下面的,依赖moment和mkdirp模块,注意用npm安装
//以下代码来源:https://blog.csdn.net/qq_31281245/article/details/127925008 const fs = require('fs') // 引入fs,node 自带的文件处理工具 const moment = require('moment') // 引入moment 时间处理工具 const mkdirp = require('mkdirp') // 引入文件夹处理工具 const path = require('path') // 引入路径处理工具 const Controller = require('egg').Controller; class baiduAIController extends Controller { async upload() { const { ctx } = this // 1 获取我们上传文件。 是一个数组,只有一个文件情况下,默认为数组中的下标0。 let file = ctx.request.files[0] // 2 声明存放资源的路径 let uploadDir = '' try { // 3 读取文件内容 let f = fs.readFileSync(file.filepath) // 4 获取当前日期 let day = moment(new Date()).format('YYYYMMDD') // 5 生成文件最后要保存的路径地址 let dir = path.join(this.config.uploadDir, day); await mkdirp(dir); // 6 这个方法是,如果 上述dir 路径存在,那就不创建,如果不存在则会创建这个对应目录文件夹 // 7 返回图片保存的完整路径 uploadDir = path.join(dir, file.filename); // 8 将图片内容写入到文件夹下 fs.writeFileSync(uploadDir, f) } finally { // 清除临时文件 await ctx.cleanupRequestFiles(); } ctx.body = { code: 200, msg: 'Upload Success', data: uploadDir.replace(/app/, ''),// 删除 /app/ 这个目录 } } } module.exports = baiduAIController;
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 根据以下文字信息,做EA模型图
- ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
- ¥15 vscode程序一直报同样的错,如何解决?
- ¥15 关于使用unity中遇到的问题
- ¥15 开放世界如何写线性关卡的用例(类似原神)
- ¥15 关于并联谐振电磁感应加热
- ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
- ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
- ¥60 关机时蓝屏并显示KMODE_EXCEPTION_NOT_HANDLED,怎么修?
- ¥66 如何制作支付宝扫码跳转到发红包界面