欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > [微信小程序]上传图片到阿里云OSS

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:736

高端HTML5响应式企业通用网

2020-05-06   浏览:517

html5响应式外贸网站英文版

2020-05-08   浏览:505

HTML5自适应律师工作室类网

2020-04-04   浏览:501

HTML5影视传媒文化公司类网

2020-05-12   浏览:494

[微信小程序]上传图片到阿里云OSS

发布时间:2020-11-14  

@Author GQ 2017年07月30日 我的方法需要借助客服功能来实现,虽然繁琐,但是目的达成了~ 1.将小程序选择的照片上传至微信临时服务器并返回图片url;(需要开通客服功能) 2.将url返回给自己的后台,后台通过url获取流再上传至阿里OSS; 这里实现第二步:

 

关于如何开通客服功能的消息的配置可以看我的上一篇博客点我查看 上传图片到微信临时服务器

首先要获取到access_token,有效期2小时,token详情看这里

GET方法请求 //获取access_token https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

1

2

1

2

参数 说明
grant_type
  填 client_credential  
appid   第三方用户唯一凭证  
secret   上微信公众平台小程序扫二维码查看  
返回 //获取成功返回 { "access_token": "ACCESS_TOKEN", "expires_in": 7200 }

 

拿到access_token后就可以上传临时文件了

//上传临时文件 https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

 

GET方法请求 参数 说明
access_token   调用接口凭证  
type   看下面  
media   form-data中媒体文件标识  

图片(image): 1M,支持JPG格式

语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式

视频(video):10MB,支持MP4格式

缩略图(thumb):64KB,支持JPG格式

媒体文件在后台保存时间为3天,即3天后media_id失效。

各位记住了,详情看这里

返回 //上传成功返回 { "type": "image", "media_id": "R-Y5NXGd1tUUeKKEX37eV5q63MoPNQKW8xpnb_29Z3Yp22flghiZIRuGny0uYBRZ", "created_at": 1501137599 }

 

这里的media_id就是刚才上传的文件,怎么打开呢?不要慌!

用微信官方调试工具即可查看刚才上传的图片

如果出现下图的样子,就表示success了,但是图片不应该是返回url吗 ? 怎么返回只有个header

其实返回的是图片的流

如果想要看一下图片呢,可以在浏览器直接输下面这段就会提示下载图片,参数上面都有

//获取文件 https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

1

2

1

2

既然上传成功了,也看到图片了,下面就该上传到阿里云OSS上并返回url

阿里云官方文档有写,我后台用的是NodeJs,大家根据自己的后台看阿里文档

就是通过读取微信临时服务器图片的流到OSS并转成图片存起来,然后返回给咱们阿里的图片url

呵(ni)呵(mei)哒(de)~官方总是写的简单难懂,能少写就少写!

我贴一下Node后台上传图片的代码 var express = require('express'); var router = express.Router(); var fs = require('fs'); var commonResult = require('../../service/commonResult'); //阿里云OSS var co = require('co'); var OSS = require('ali-oss'); var client = new OSS({ region: 'oss-cn-beijing',//填自己的 accessKeyId: 'xxx',//填自己的 accessKeySecret: 'xxx',//填自己的 endPoint: '',//如果指定了endpoint,则region会被忽略 bucket: 'xxx'//填自己的 }); //上传图片文件 router.post('/uploadFile', function (req, res, next) { var url = req.body.url;//这个url是微信小程序直接全部传过来的,就是刚才直接复制在浏览器就能下载到图片的那个。打印出来是这样的: https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID var timestamp = new Date().getTime(); var path = './test'; var key = 'test/' + timestamp; //选择bucket client.useBucket('xxx');//填自己的 //获取远程文件,并以流写入文件 console.log("微信临时文件地址 = " + url) var stream = request(url).pipe(fs.createWriteStream(path)); stream.on('error', function (err) { console.log(err); }); //流写入完毕 stream.on('finish', function () { co(function*() { var result = yield client.put(key, path); console.log(result); commonResult.returnSuccess(res, result.url); }).catch(function (err) { console.log(err); commonResult.returnFailed(res, "上传失败"); }); }); }); module.exports = router;

 

本文标签

:备案管家服务帮您把复杂流程变简单,解决您在进行网站备案过程中遇到的效率低下和成功率不高的问题。个人300/2个域名,企业500/5个域名,qq1650004.