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

258资源分享网

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

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:736

高端HTML5响应式企业通用网

2020-05-06   浏览:517

html5响应式外贸网站英文版

2020-05-08   浏览:505

HTML5自适应律师工作室类网

2020-04-04   浏览:501

HTML5影视传媒文化公司类网

2020-05-12   浏览:495

微信小程序开发(二)图片上传

发布时间:2020-11-20  

在之前的博客《Node.js+express+MySQL使用七牛云实现的用户头像修改》,已经实现了在MUI框架或者《 Ajax实现图片上传》。之前都是使用Node.js写的一个后台接口,就可以使用ajax上传了,在MUI框架中的mui.ajax其实还是ajax。在《Node.js+express+MySQL使用七牛云实现的用户头像修改》我已经详细的说了怎么配置七牛了,这里不再说明。

准备工作

配置uploadFile合法域名

在做微信小程序的图片上传之前我们需要先配置uploadFile的合法域名。这个可以看《微信小程序开发(一)新建小程序项目》的服务器配置部分。

看小程序文档

看小程序文档—wx.uploadFile,看文档主要是看小程序给的api是怎么使用的。在使用wx.uploadFile之前需要先使用wx.chooseImage(OBJECT)这个api,因为我们需要先选择图片。

代码实现

有了上面的准备工作后我们就可以实际操作了。

小程序端的实现

小程序端的实现其实很简单,一个事件去出发选择上传操作。

 

wx.chooseImage({

count: 9, // 默认9

sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

success: function (res) {

// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

var tempFilePaths = res.tempFilePaths;

wx.uploadFile({

url: 'https://www.hgdqdev.cn/api/upload2',

filePath: tempFilePaths[0],

name: 'file',

header: {

'content-type': 'multipart/form-data'

},

success: function (res) {

var data = res.data

console.log(res);

}

})

}

})

这里我也开放我的两个图片上传的接口:

 

【ajax版本】https://www.hgdqdev.cn/api/upload

【小程序版本】https://www.hgdqdev.cn/api/upload2

这两个接口的使用大家可以看上线的文章,遇见接口不能使用时可以联系我,我开服务器。

服务端的实现

在实现服务端,我们需要使用一个新的模块multer,关于这个模块的使用,大家可以看文档就是了。  代码:

 

// 微信小程序 图片上传

var multer = require('multer')

var upload = multer({ dest: './tmp/' })

// 图片上传

router.all('/api/upload2', upload.single('file'), function(req, res, next){

// 文件路径

var filePath = './tmp/' + req.file.filename;

// 文件类型

var fileType = req.file.mimetype;

var lastName = '';

switch (fileType){

case 'image/png':

lastName = '.png';

break;

case 'image/jpeg':

lastName = '.jpg';

break;

default:

lastName = '.png';

break;

}

// 构建图片名

var fileName = Date.now() + lastName;

console.log(req.file);

// 图片重命名

fs.rename(filePath, fileName, (err) => {

if (err) throw err;

// 七牛上传

var putPolicy = new qiniu.rs.PutPolicy(bucket+":" + fileName);

var token = putPolicy.token();

var extra = new qiniu.io.PutExtra();

qiniu.io.putFile(token, fileName, fileName, extra, function(err, ret) {

if(!err) {

// 上传成功, 处理返回值

// ret.key 是图片的名字

var imageSrc = '' + ret.key;

res.end(JSON.stringify({status:'100',msg:'上传成功',imageUrl:imageSrc}));

} else {

// 上传失败, 处理返回代码

res.end(JSON.stringify({status:'101',msg:'上传失败',error:ret}));

}

// 上传后删除本地图片

fs.unlinkSync(fileName);

});

});

})

后端代码其实也很简单的。理清思路就好做了。

效果图

微信小程序开发(二)图片上传

这里写图片描述  手机不能搞gif图,就电脑截屏了,这个在微信预览是一样的。