以上是选择图片的代码,我想做一个书籍发布功能,里面包含书籍图片上传,但是我不会获取他的路径幷将他插入数据库
微信小程序如何上传图片到数据库,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 AT89C51控制8位八段数码管显示时钟。
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 下图接收小电路,谁知道原理
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口