今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回

首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图片上传的正常逻辑。

 //添加图片
addImg: function() {
var that = this;
console.log(9 - that.data.checkImgLength)
if (9 - that.data.checkImgLength >= 1){
wx.chooseImage({
count: 9 - that.data.checkImgLength, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var tempFilePaths = res.tempFilePaths//这里拿到的是图片在微信客户端的临时路径!!!
let length = tempFilePaths.length;
let tempList = that.data.imgLists.concat(tempFilePaths);//JSON数据
that.setData({
imgLists: tempList,
checkImgLength: that.data.checkImgLength + length//长度相加,这里是为了选择的图片不会超过9
})
}
})
}
},

这里要注意的是,第11行的路径是临时的,再刷新,这个路径就无用了,甚至这个时候复制这个路径到自己的浏览器里也没有用,这里要注意,正确的业务逻辑是传到自己的服务器,再保存到服务器,再由客户端通过服务器链接拿到图片。

下面是我的node服务器端的部分代码

 var express = require("express");
var formidable = require("formidable");
var path = require("path")
var fs = require("fs")
var image = require("imageinfo")
const listenNumber = 5000; var app = express(); app.use(express.static('upload'))//这个很重要,必须要这个才能拿到图片链接,而不是进入路由,有兴趣的同学可以删掉试验一下 app.post("/upload", (req, res) => {
var form = new formidable.IncomingForm();//既处理表单,又处理文件上传
//设置文件上传文件夹/路径,__dirname是一个常量,为当前路径
let uploadDir = path.join(__dirname, "../upload/");
form.uploadDir = uploadDir;//本地文件夹目录路径 form.parse(req, (err, fields, files) => {
let oldPath = files.cover.path;//这里的路径是图片的本地路径
console.log(files.cover.name)//图片传过来的名字
let newPath = path.join(path.dirname(oldPath), files.cover.name);
//这里我传回一个下载此图片的Url
var downUrl = "http://localhost:" + listenNumber + "/upload/" + files.cover.name;//这里是想传回图片的链接
fs.rename(oldPath, newPath, () => {//fs.rename重命名图片名称
res.json({ downUrl: downUrl })
})
})
}) app.listen(listenNumber)

部分重要逻辑大家可以按照自己的需求来做,这里需要引用的第三方包是express、formidable、path,大家可以在终端输入以下命令下载:

npm install express
npm install formidable
npm install path

第二十五行可以拿到图片在node服务器中的链接,大家可以通过小程序端的success回调函数拿到链接等数据,然后保存在data中,通过{{imgSrc}}进行渲染就能确定你的逻辑已经走通了。

希望我的教程能够帮到大家,加油!!!

nodeJs实现微信小程序的图片上传的更多相关文章

  1. [转]微信小程序实现图片上传功能

    本文转自:http://blog.csdn.net/feter1992/article/details/77877659 前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何 ...

  2. 微信小程序实现图片上传功能

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  3. 微信小程序--实现图片上传

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  4. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  5. 微信小程序实现图片上传,预览,删除

    wxml: <view class='imgBox'> <image class='imgList' wx:for="{{imgs}}" wx:for-item= ...

  6. 微信小程序 实现图片上传并展示到前端(多文件)并实现表单提交验证

    链接: https://blog.csdn.net/guanj0623/article/details/121595884?spm=1001.2014.3001.5501 https://blog.c ...

  7. 小程序实现图片上传,预览以及图片base64位处理

    最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...

  8. 微信小程序多张图片上传

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...

  9. 「小程序JAVA实战」小程序头像图片上传(上)(43)

    转自:https://idig8.com/2018/09/08/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan40/ 在微信小程序中 ...

随机推荐

  1. unity在一个对象上挂多个一样的脚本怎么获取

    使用GetComponents获取,存到一个该类的数组里

  2. Python脚本语言第一行的写法

    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python ...

  3. 2018.11.14 uoj#34. 多项式乘法(ntt)

    传送门 今天学习nttnttntt. 其实递归方法和fftfftfft是完全相同的. 只不过fftfftfft的单位根用的是复数中的东西,而nttnttntt用的是数论里面有相同性质的原根. 代码: ...

  4. openstack之安全组管理

    命令概览 (nova-api)[root@cc07 /]# nova help|grep secgroup add-secgroup Add a Security Group to a server. ...

  5. openstack查看命令的restful调用形式

    [root@cc10 fast-pulsar2]# [root@cc10 fast-pulsar2]# cinder --debug type-create hzb DEBUG:keystonecli ...

  6. ELK简单部署

    系统环境: IP:192.168.0.156 ruby环境准备 yum -y install ruby-devel ruby-libs ruby-rdoc ruby-ri ruby-static ru ...

  7. 线性回归,多项式回归(P2)

    回归问题 回归问题包含有线性回归和多项式回归 简单来说,线性回归就是用多元一次方程拟合数据,多项式回归是用多元多次来拟合方程 在几何意义上看,线性回归拟合出的是直线,平面.多项式拟合出来的是曲线,曲面 ...

  8. Android Studio自定义组合控件

    在Android的开发中,为了能够服用代码,会把有一定共有特点的控件组合在一起定义成一个自定义组合控件. 本文就详细讲述这一过程.虽然这样的View的组合有一个粒度的问题.粒度太大了无法复用,粒度太小 ...

  9. java基础-day28

    第05天 MySQL 今日内容介绍 u 数据库的概述 u MySQL和SQLyog的安装和使用 u SQL语句 第1章   数据库的概述 1.1  数据库的概述 1.1.1 概述 l  什么是数据库 ...

  10. Hdu1151 Air Raid(最小覆盖路径)

    Air Raid Problem Description Consider a town where all the streets are one-way and each street leads ...