做一个图片上传的功能,写了一个自定义的上传函数,客户端点击提交数据的时候,判断图片组件中是否有图片,如果有,则上传,后台用tp5。
data:{
upToSrvImg:[]
}
下面是自定义图片上传函数
//自定义图片上传函数
upFileDiy:function(filePaths,successUp,failUp){
var that = this;
var upToSrvImgs = [];
for (var i = 0; i < filePaths.length; i++) {
wx.uploadFile({
url: that.data.baseUrl+'index/index/upfile.html',
filePath: filePaths[i],
name: 'files',
header: { 'Content-Type': 'multipart/form-data' },
formData:{
},
success: function (res) {
console.log(res.data); //此处可以返回正确的值,如20180201\c1bd9b79d693e77e0ed871d7dde74ca8.jpg
var subToSrvPath = that.data.baseUrl + "uploads/"+res.data; //将图片的完整服务器地址拼装,下面用到
upToSrvImgs.push(subToSrvPath);
successUp++;
//console.log("uptosrvimgs数组结束元素" + upToSrvImgs);
console.log('成功上传' + successUp + '张照片');
that.setData({
// chooseFiles:[],
images:upToSrvImgs
})
},
fail: function (res) {
failUp++;
console.log('失败了' + failUp + '张照片');
},
complete:function(){
console.log('upToSrvImgs最后的数组元素是:' + upToSrvImgs);
//that.data.upToSrvImg = upToSrvImgs;
that.setData({
upToSrvImg:upToSrvImgs
})
console.log(that.data.upToSrvImg);
},
})
}
}
testUrl:function(){
var imgs = this.data.chooseFiles;
var successUp = 0;
var failUp = 0;
this.upFileDiy(imgs, successUp, failUp);
console.log("点击了测试按钮,图片路径是:")
console.log(this.data.images);
},
下面是wxml
<button catchtap="testUrl">我要测试</button>
如果是点击我要测试按钮的话控制台提示图片路径为空,但是,再次点击的话就会打印出完整的图片的地址。不知道是怎么回事。that.setData设置有延迟吗,还是我的方法有误啊,各位大神帮忙分析一下,拜托了