- 需求的场景描述(希望解决的问题)
用wx.uploadFile上传图片到腾讯cos后,文件名被自动修改成“随机数字与字母的组合”
- 希望提供的能力
希望用wx.uploadFile上传图片到腾讯cos后,文件名保持不变!!!
对我刚才12楼的步骤②有遗漏,因此更正为:
步骤②
在 “server\app.js” 中引入koa-body,如下图
// 解析请求体 //app.use(bodyParser()) //注释掉例程原本的解析方式 app.use(koaBody({ multipart: true })) //改用koa-body解析方式 |
@Jason 谢谢你提供的建议!
你提的方案一:在multipart内部再解析一次请求体。我看了你链接的文章,没明白是如何再次解析的。所以改用方案二。
我是如下实施方案二的:
① 在 “server\package.json” 中添加依赖“koa-body”,如下图,并在本地用“npm install”进行安装。
② 在 “server\app.js” 中引入koa-body,如下图
③ 在 “server\routes\index.js” 中引入koa-body,如下图
并用注释掉例程原本的’/upload’路由语句,改为
router.post(’/upload’, koaBody(), controllers.upload)
如下图
④ 在 “server\controllers\upload.js” 中添加打印请求头,如下图
const { uploader } = require( '../qcloud' ) module.exports = async ctx => { // 以下打印requsest是我增加的,希望能看到上传图片时顺带的formData数据 // 但我启动服务器端设断点调试后,发现打印出来的ctx.request里面找不到formData数据 console.log( 'ctx.request.body= \n' ) console.log(ctx.request.body) // 以下程序是wafer例程原本就有的,实现了图片上传到COS中 const data = await uploader(ctx.req) ctx.state.data = data } |
但是:我在服务器断点查看打印输出的里面,依然没有找到wx.uploadFile中携带的formData数据。
是不是我的上述步骤有问题?或者有什么遗漏的地方?
@古月D杰 谢谢你能回复我!
我是用的你们官方的wafer2例程(客户端+服务器)
客户端的上传图片部分,我只是增加了formData
服务器端的我用node.js,我只是在接收图片路由到\server\controllers\upload.js,在里面增加了打印接收到的ctx.request