setData设置了,没起作用
发布于 6 年前 作者 gangfang 6828 次浏览 来自 问答

做一个图片上传的功能,写了一个自定义的上传函数,客户端点击提交数据的时候,判断图片组件中是否有图片,如果有,则上传,后台用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设置有延迟吗,还是我的方法有误啊,各位大神帮忙分析一下,拜托了

2 回复

后来我把wx.uploadFile方法写入wx.chooseImage的成功回调当中了。也是一种解决方法

请问解决了吗

回到顶部