tp5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器功能
最近在做一個(gè)教育類的小商城的微信小程序,用到了上傳多個(gè)圖片文件到服務(wù)器端,這里做一個(gè)講解,希望對(duì)大家有所幫助。
1,小程序端:
在wxml文件中:
<!--選擇圖片 -->
<view class="picture">
<view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this">
<image class='imgSelected' src="{{item}}" data-index="{{index}}" mode="aspectFill" bindtap="previewImg"></image>
<view class="delete-btn" data-index="{{index}}" catchtap="deleteImg">刪除</view>
</view>
<view class="clickImg" bindtap="chooseImg">點(diǎn)擊上傳作業(yè)</view>
</view>
<!-- 選擇圖片end -->
在js文件中:
Page({
/**
* 頁(yè)面的初始數(shù)據(jù)
*/
data: {
index: 0,
multiIndex: [0, 0],
//傳到后臺(tái)的課程分類
cname:'',
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
onLoad: function (options) {
},
/**
*
* 生命周期函數(shù)--監(jiān)聽頁(yè)面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面顯示
*/
onShow: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面隱藏
*/
onHide: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面卸載
*/
onUnload: function () {
},
/**
* 頁(yè)面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動(dòng)作
*/
onPullDownRefresh: function () {
},
/**
* 頁(yè)面上拉觸底事件的處理函數(shù)
*/
onReachBottom: function () {
},
/**
* 用戶點(diǎn)擊右上角分享
*/
onShareAppMessage: function () {
},
// 上傳圖片操作
// 上傳圖片
chooseImg: function (e) {
var that = this;
if(that.data.cname==''){
}else{
var imgs = this.data.imgs;
if (imgs.length >= 9) {
this.setData({
lenMore: 1
});
setTimeout(function () {
that.setData({
lenMore: 0
});
}, 2500);
return false;
}
wx.chooseImage({
// count: 1, // 默認(rèn)9
sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
sourceType: ['album', 'camera'], // 可以指定來源是相冊(cè)還是相機(jī),默認(rèn)二者都有
success: function (res) {
// 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
var tempFilePaths = res.tempFilePaths;
var imgs = that.data.imgs;
// console.log(tempFilePaths + '----');
for (var i = 0; i < tempFilePaths.length; i++) {
if (imgs.length >= 9) {
that.setData({
imgs: imgs
});
return false;
} else {
imgs.push(tempFilePaths[i]);
}
}
// console.log(imgs);
that.setData({
imgs: imgs,
});
//循環(huán)把圖片上傳到服務(wù)器
for (var i = 0; i < imgs.length; i++) {
wx.uploadFile({
url: url + 'Wx_SaveHomeWork',
filePath: imgs[i],
name: 'files',
formData: {
cname: that.data.cname
},
success: function (res) {
console.log(res)
}
})
}
}
});
}
},
// 刪除圖片
deleteImg: function (e) {
var imgs = this.data.imgs;
var index = e.currentTarget.dataset.index;
imgs.splice(index, 1);
this.setData({
imgs: imgs
});
},
// 預(yù)覽圖片
previewImg: function (e) {
//獲取當(dāng)前圖片的下標(biāo)
var index = e.currentTarget.dataset.index;
//所有圖片
var imgs = this.data.imgs;
wx.previewImage({
//當(dāng)前顯示圖片
current: imgs[index],
//所有圖片
urls: imgs
})
},
})
2,我們注意到我的wx.request請(qǐng)求中Wx_SaveHomeWork方法是后臺(tái)服務(wù)器的接收?qǐng)D片方法,
后邊我會(huì)把這個(gè)方法展示出來,
3.tp5后臺(tái)controller中:
//存取學(xué)生作業(yè)信息
public function Wx_SaveHomeWork(){
$files=\request()->file('files');
$cname=\request()->param('cname');
$cid=Db::name('course')->where('cname',$cname)->value('id');
$max_id=Db::name('homework')->max('id');
foreach($files as $item){
// 移動(dòng)到框架應(yīng)用根目錄/public/uploads/ 目錄下
$info = $files->rule('date')->move(ROOT_PATH . 'public' . DS . 'uploads');
if($info){
$saveName=str_replace("\\","/",$info->getSaveName());
$img='/uploads/'.$saveName;
$homework[]=['id'=>$max_id+1,'img'=>$img,'cid'=>$cid];
}
}
//把數(shù)據(jù)插入到作業(yè)表中
\db('homework')->insertAll($homework);
}
這里說一下,max_id的作用,因?yàn)榻邮艿氖嵌鄰垐D片,相當(dāng)于一次性要存儲(chǔ)多條數(shù)據(jù),所以用max_id對(duì)id進(jìn)行自增,存儲(chǔ)到數(shù)據(jù)庫(kù)表,cid是我自己數(shù)據(jù)庫(kù)邏輯需要用到的變量,可以不用考慮,
4.講解的不夠清楚,因?yàn)槭亲约簩懙?,感受不到難點(diǎn)在哪里,我自己的難點(diǎn)是在小程序端的圖片上傳,用了for循環(huán),循環(huán)上傳的方法,其他的相對(duì)來說,邏輯比較簡(jiǎn)單。
總結(jié)
以上所述是小編給大家介紹的tp5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
淺談PHP的數(shù)據(jù)庫(kù)接口和技術(shù)
下面小編就為大家?guī)硪黄獪\談PHP的數(shù)據(jù)庫(kù)接口和技術(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
PHP連接MYSQL數(shù)據(jù)庫(kù)實(shí)例代碼
現(xiàn)在做的項(xiàng)目需要php連接mysql數(shù)據(jù)庫(kù),雖然之前學(xué)過,但是現(xiàn)在基本上都給忘了,之后通過查找相關(guān)資料找到了解決方法,下面小編把具體方法分享在腳本之家平臺(tái)供大家學(xué)習(xí)2016-01-01
thinkPHP框架實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器示例
這篇文章主要介紹了thinkPHP框架實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器,結(jié)合實(shí)例形式分析了基于thinkPHP框架的用戶登陸、數(shù)值計(jì)算、數(shù)據(jù)庫(kù)讀寫、歷史記錄保存等功能相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-12-12
php之XML轉(zhuǎn)數(shù)組函數(shù)的詳解
本篇文章是對(duì)php中的XML轉(zhuǎn)數(shù)組函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP實(shí)現(xiàn)根據(jù)密碼長(zhǎng)度顯示安全條
本文通過實(shí)例代碼給大家分享php根據(jù)密碼長(zhǎng)度顯示安全條功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07
Zend Framework框架的session會(huì)話周期及次數(shù)限制使用示例
這篇文章主要介紹了Zend Framework框架的session會(huì)話周期及次數(shù)限制使用示例,需要的朋友可以參考下2014-03-03

