說明 圖片/視頻這類文件是從客戶端會話選擇文件。
一、wxml文件添加if切換顯示
<!--上傳文件到雲存儲--> <button bindtap="chooseImg" type="primary" >上傳單張圖片</button> <button bindtap="chooseVideo" type="primary" >上傳單個視頻</button> <view class="myFile"> <image wx:if="{{showImage}}" src="{{imageUrl}}"></image> <video wx:if="{{showVideo}}" src="{{videoUrl}}"></video> </view>
二、wxss文件
.myFile{ margin: 30rpx auto; text-align: center; } button{ margin: 30rpx; }
三、js文件
1、定義data
初始值賦值,定義圖片和視頻初始的顯示狀態(都隱藏不顯示)
data:{ //默認圖片和視頻都不顯示 showImage:false, showVideo:false },
2、上傳圖片和上傳視頻的代碼整合
將uploadImg()和uploadVideo()整合成uploadFile()
uploadFile(tempFile,fileName,type){ //傳遞三個參數,tempFile是所選文件的臨時路徑,fileName是上傳到雲存儲的cloudPath的值,type表示上傳的文件類型(1表示上傳圖片,2表示上傳視頻)
console.log("要上傳文件的臨時路徑",tempFile)
let timestamp = (new Date()).valueOf()
wx.cloud.uploadFile({
cloudPath: fileName, //雲存儲的路徑
filePath: tempFile, // 文件路徑
}).then(res => {
console.log("上傳成功",res)
wx.showToast({
title: '上傳成功',
icon:"success",
duration:2000
})
let that = this
if(type==1){
setTimeout(function(){
that.setData({
imageUrl:res.fileID,
showImage:true, //顯示圖片
showVideo:false //隱藏視頻
})
},2000)
}else if(type ==2){
setTimeout(function(){
that.setData({
videoUrl:res.fileID,
showImage:false,
showVideo:true
})
},2000)
}
})
.catch(err => {
console.log("上傳失敗",err);
})
}
3、在chooseImg()函數和chooseVideo()函數中分別調用整合后的上傳文件函數uploadFile()
1.在chooseImg()函數中調用uploadFile()
chooseImg(){ let that = this wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success (res) { console.log("選擇成功",res); wx.showLoading({ title: '上傳中', }) // tempFilePath可以作為img標簽的src屬性顯示圖片 const tempFilePaths = res.tempFilePaths //調用uploadImg(tempFile)函數,實現圖片上傳功能 //that.uploadImg(tempFilePaths[0]) //調用uploadFile()實現上傳文件功能 let timestamp = (new Date()).valueOf() that.uploadFile(tempFilePaths[0],+timestamp+'.png',1) //傳遞三個參數 } }) }
2.在chooseVideo()函數中調用uploadFile()
chooseVideo(){ let that = this wx.chooseVideo({ sourceType: ['album','camera'], maxDuration: 60, camera: 'back', success(res) { //console.log(res.tempFilePath); console.log("----------",res.tempFilePath); wx.showLoading({ title: '上傳中', }) //調用uploadImg(tempFile)函數,實現圖片上傳功能 //that.uploadVideo(res.tempFilePath) //調用uploadFile()實現上傳文件功能 let timestamp = (new Date()).valueOf() that.uploadFile(res.tempFilePath,+timestamp+'.mp4',2) //傳遞三個參數(第一個參數傳遞所選文件的臨時路徑,第二個參數傳遞雲存儲的路徑,第三個參數傳遞上傳文件的類型) } }) }
四、最終效果

