微信小程序?qū)崿F(xiàn)上傳多張圖片、刪除圖片
最近在做微信小程序,遇到上傳多張圖片到服務(wù)器,計(jì)算上傳圖片的張數(shù),并且可以手動(dòng)刪除圖片,下面是效果圖
效果圖:

本來(lái)用的是小程序提供的 mp-uploader 上傳圖片的組件,無(wú)奈次組件刪除效果不是我想要的,只能用 wx.chooseImage進(jìn)行上傳圖片,在使用uplaodFile將圖片發(fā)送給后臺(tái)服務(wù)器。
下面直接展示代碼:
wxml:
<view class="con_titles">
<view class="con_left">
<image src="../../images/comint.png"></image>
<text class="titles_t">患者病歷</text>
</view>
<view class="img_num">{{imgShow.length}}/6</view>
</view>
<view class="page__bd">
<!-- <mp-uploader style='color:#353535' bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uplaodFile}}" files="{{files}}" max-count="6" title="患者病歷"></mp-uploader> -->
<view class="add-image">
<view class="images-boxc" wx:for="{{imgShow}}" wx:for-item="item" wx:key="image">
<image class="image_size" data-index="{{index}}" data-src="{{item}}" src="{{item}}" bindtap="clickImage"></image>
<image class="delete-image" data-index="{{index}}" src="../../images/delete_img.png" bindtap="deleteImage"></image>
</view>
<view class="images-add" wx:if="{{imgShow.length<6}}">
<image class="image_size image_sizen" src="../../images/add_img.png" bindtap="chooseImage"></image>
</view>
</view>
</view>
wxss:
/* 上傳圖片 */
.images-boxc {
position: relative;
border: dashed 1px #bfbfbf;
width: 139rpx;
height: 139rpx;
margin-right: 32rpx;
margin-bottom: 32rpx;
}
.delete-image {
position: absolute;
width: 30rpx;
height: 30rpx;
right: 16rpx;
top: 16rpx;
}
.add-image {
display: flex;
flex-wrap: wrap;
}
.image_size {
width: 139rpx;
height: 139rpx;
}
.image_sizen {
height: 142rpx;
}
js:
data: {
count: 6, //設(shè)置最多6張圖片
allImg: [],
imgShow: [],
},
// 上傳圖片
chooseImage: function() {
wx.showLoading({
title: '加載中...',
mask: true
})
var that = this;
var imgShow = that.data.imgShow;
var count = that.data.count - imgShow.length; //設(shè)置最多6張圖片
wx.chooseImage({
count: count,
sizeType: ['compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
sourceType: ['album', 'camera'], // 可以指定來(lái)源是相冊(cè)還是相機(jī),默認(rèn)二者都有
success: function(res) {
console.log(res)
that.uplaodFile(res)
for (var i = 0, h = res.tempFilePaths.length; i < h; i++) {
imgShow.push(res.tempFilePaths[i]);
that.setData({
imgShow: imgShow
})
}
wx.hideLoading({
title: '加載中...',
mask: false
})
}
})
},
// 刪除圖片
deleteImage(e) {
let self = this;
let index = e.target.dataset.index;
let imgShow = self.data.imgShow;
let allImg = self.data.allImg;
allImg.splice(index, 1);
imgShow.splice(index, 1);
this.setData({
imgShow: imgShow,
allImg: allImg
})
},
previewImage: function(e) {
console.log(this.data.files)
wx.previewImage({
current: e.currentTarget.id, // 當(dāng)前顯示圖片的http鏈接
urls: this.data.files // 需要預(yù)覽的圖片http鏈接列表
})
},
selectFile(files) {
console.log('files', files)
// 返回false可以阻止某次文件上傳
},
uplaodFile(files) {
console.log('upload files', files)
let that = this
files.tempFilePaths.forEach(element => {
util.uploadFile('/fastdfsServer/fileUpload', element, 'file', {}, function(res) { //上傳本地圖片地址到服務(wù)器 返回地址 存放到input提交時(shí)取值
res = JSON.parse(res);
if (res.responseCode == 0) {
sysMsg.sysMsg("上傳成功", 1000, 'success');
that.setData({
allImg: that.data.allImg.concat(res.responseBody)
});
} else {
sysMsg.sysMsg("上傳失敗", 1500, 'error');
}
});
});
// 文件上傳的函數(shù),返回一個(gè)promise
return new Promise((resolve, reject) => {
resolve({
urls: files.tempFilePaths
});
setTimeout(() => {
reject('some error')
}, 10000)
})
},
uploadError(e) {
console.log('upload error', e.detail)
},
uploadSuccess(e) {
// this.setData({
// allImg: this.data.allImg.concat(e.detail.urls[0])
// });
console.log('upload success', e.detail, e.detail.urls)
},
為大家推薦現(xiàn)在關(guān)注度比較高的微信小程序教程一篇:《微信小程序開(kāi)發(fā)教程》小編為大家精心整理的,希望喜歡。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序?qū)崿F(xiàn)上傳照片代碼實(shí)例解析
- uni-app開(kāi)發(fā)微信小程序之H5壓縮上傳圖片的問(wèn)題詳解
- 微信小程序?qū)崿F(xiàn)云開(kāi)發(fā)上傳文件、圖片功能
- 微信小程序?qū)崿F(xiàn)多文件或者圖片上傳
- 微信小程序?qū)崿F(xiàn)上傳圖片
- 微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序
- 微信小程序?qū)崿F(xiàn)上傳圖片的功能
- 微信小程序?qū)崿F(xiàn)同時(shí)上傳多張圖片
- 微信小程序?qū)崿F(xiàn)一張或多張圖片上傳(云開(kāi)發(fā))
- 微信小程序?qū)崿F(xiàn)文件、圖片上傳功能
- 微信小程序?qū)崿F(xiàn)多張照片上傳功能
相關(guān)文章
在服務(wù)端(Page.Write)調(diào)用自定義的JS方法詳解
自從[javascript]自定義MessageBox一文發(fā)布以后,很多網(wǎng)友都來(lái)信詢問(wèn),如何在服務(wù)端調(diào)用ShowInfo方法,周末休息想了個(gè)折中的辦法來(lái)實(shí)現(xiàn)2013-08-08
js 用于檢測(cè)類(lèi)數(shù)組對(duì)象的函數(shù)方法
下面小編就為大家?guī)?lái)一篇js 用于檢測(cè)類(lèi)數(shù)組對(duì)象的函數(shù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
js實(shí)現(xiàn)倒計(jì)時(shí)及時(shí)間對(duì)象
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)倒計(jì)時(shí)效果及時(shí)間對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
js實(shí)現(xiàn)簡(jiǎn)單的可切換選項(xiàng)卡效果
這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)單的可切換選項(xiàng)卡效果的方法,涉及javascript操作css樣式實(shí)現(xiàn)切換選項(xiàng)卡的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
讓JavaScript 輕松支持函數(shù)重載 (Part 1 - 設(shè)計(jì))
JavaScript支持函數(shù)重載嗎?可以說(shuō)不支持,也可以說(shuō)支持。說(shuō)不支持,是因?yàn)镴avaScript不能好像其它原生支持函數(shù)重載的語(yǔ)言一樣,直接寫(xiě)多個(gè)同名函數(shù),讓編譯器來(lái)判斷某個(gè)調(diào)用對(duì)應(yīng)的是哪一個(gè)重載。2009-08-08
jQuery中 DOM節(jié)點(diǎn)操作方法大全
本文給大家介紹了jQuery中 DOM節(jié)點(diǎn)操作方法大全,感興趣的朋友一起看看吧2017-10-10
JavaScript 原型鏈學(xué)習(xí)總結(jié)
在JavaScript中,一切都是對(duì)像,函數(shù)是第一型2010-10-10
javascript中match函數(shù)的用法小結(jié)
本篇文章主要是對(duì)javascript中match函數(shù)的用法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02

