小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 需求的场景描述(希望解决的问题)
问题:接口返回的二进制如何转为文件并保存到云存储
流程:
1.小程序向云函数发送请求,请求云开发生成返回图片地址(在云存储的地址)
2.云函数接收到请求,请求获取accessToken (已完成)
4.将二维码保存至云存储
- 希望提供的能力
将二维码保存至云存储 或 直接发送到云存储指定位置
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
var rp = require('request-promise');//还需要npm install request
var
rp = require(
'request-promise'
);
//还需要npm install request
//以下代码写在exports.main
函数里
async
function
request(url) {
return
new
Promise(
(resolve) {
rp(url)
.then(
(data) {
resolve(data);
})
.
catch
(
() {
resolve({ err: 1 });
});
}
createOpt =
(token, scene, page) {
options = {
method:
'POST'
,
uri:
'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='
+ token,
encoding:
null
//一定要加这个!!!!,不然存进去乱码,试了好久才发现是这里的问题,发出来给大家节约时间
body: {
"scene"
: scene,
"page"
: page
},
json:
true
// Automatically stringifies the body to JSON
};
options
options = createOpt('access_token自己获取',
'test=key&ffff=lalalla'
'pages/index/index'
)
fileStream = await request(options)
await cloud.uploadFile({
cloudPath:
'testCode3.png'
fileContent: fileStream,
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
wx.cloud.uploadFile({ cloudPath: 'example.png', // 上传至云端的路径 filePath: '', // 小程序临时文件路径 success: res => { // 返回文件 ID console.log(res.fileID) }, fail: console.error })
官方文件给的是临时文件路径,这个还可以是二进制文件??
直接在云函数里把二维码的二进制存到云储存里会自动保存为图片,你写的这个是小程序端的接口,在云函数中有云函数存到云储存的接口,看下面:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/storage/uploadFile.html
result['data'] = await synchronous_post(url,options).then(function (e) {
return await cloud.uploadFile({
cloudPath: 'demo2.png',
fileContent: e.body
我换成这个服务端的上传了,但报错了
const fileList = ['cloud://heart-8265bd.6865-heart-8265bd/img/code_mine.png'];
var dd = await cloud.getTempFileURL({
fileList,
dd = dd.fileList[0]['tempFileURL'];
result['data']= await cloud.uploadFile({
cloudPath: 'demo.png',
fileContent: dd
我尝试了下这个方案,结果是可以上传的,虽然图片是损坏的,但文件确实生成了
云函数里应该用的是server端的sdk,这个是支持传二进制的
详见文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/storage/uploadFile.html
谢谢了,晚点试试
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
var
rp = require(
'request-promise'
);
//还需要npm install request
//以下代码写在exports.main
函数里
async
function
request(url) {
return
new
Promise(
function
(resolve) {
rp(url)
.then(
function
(data) {
resolve(data);
})
.
catch
(
function
() {
resolve({ err: 1 });
});
});
}
var
createOpt =
function
(token, scene, page) {
var
options = {
method:
'POST'
,
uri:
'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='
+ token,
encoding:
null
,
//一定要加这个!!!!,不然存进去乱码,试了好久才发现是这里的问题,发出来给大家节约时间
body: {
"scene"
: scene,
"page"
: page
},
json:
true
// Automatically stringifies the body to JSON
};
return
options
}
var
options = createOpt('access_token自己获取',
'test=key&ffff=lalalla'
,
'pages/index/index'
)
var
fileStream = await request(options)
return
await cloud.uploadFile({
cloudPath:
'testCode3.png'
,
fileContent: fileStream,
})
wx.cloud.uploadFile({ cloudPath: 'example.png', // 上传至云端的路径 filePath: '', // 小程序临时文件路径 success: res => { // 返回文件 ID console.log(res.fileID) }, fail: console.error })
官方文件给的是临时文件路径,这个还可以是二进制文件??
直接在云函数里把二维码的二进制存到云储存里会自动保存为图片,你写的这个是小程序端的接口,在云函数中有云函数存到云储存的接口,看下面:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/storage/uploadFile.html
result['data'] = await synchronous_post(url,options).then(function (e) {
return await cloud.uploadFile({
cloudPath: 'demo2.png',
fileContent: e.body
})
});
我换成这个服务端的上传了,但报错了
const fileList = ['cloud://heart-8265bd.6865-heart-8265bd/img/code_mine.png'];
var dd = await cloud.getTempFileURL({
fileList,
})
dd = dd.fileList[0]['tempFileURL'];
result['data']= await cloud.uploadFile({
cloudPath: 'demo.png',
fileContent: dd
})
我尝试了下这个方案,结果是可以上传的,虽然图片是损坏的,但文件确实生成了
云函数里应该用的是server端的sdk,这个是支持传二进制的
详见文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/storage/uploadFile.html
谢谢了,晚点试试