本來有打算寫一套小程序開發(fā)簡明教程的。覺得系統(tǒng)講起來可能挺耗費時間的库继。就先寫一些容易遇到的問題的解決吧箩艺。
今天是2017-10-23,記一下這個日期宪萄,萬一小程序的文檔改了可能這個問題就不復存在了艺谆。
問題:
小程序API中,wx.uploadFile接口只能一次上傳一個文件拜英。如果要開發(fā)一個多圖上傳的功能静汤,怎么樣才能實現(xiàn)呢?
解決:
使用for循環(huán),遍歷圖片選擇器文件路徑虫给。貼代碼
wx.chooseImage({
count: 9, // 默認9
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
var tempFilePaths = res.tempFilePaths
for(var i=0;i<10;i++){
wx.uploadFile({
url: 'https://api.xianchen.com', //接口地址
filePath: tempFilePaths[i],
name: 'file',
formData: {
'user': 'test'
},
success: function (res) {
var data = res.data
//do something
}
})
}
}
})
后端代碼:
后端使用PHP實現(xiàn)藤抡。需要注意的是,由于小程序上傳傳過來的文件名都是一樣的抹估,所以我們需要在服務(wù)端給傳過來的文件改個名字缠黍。最簡單的方式就是用Unix時間戳來命名。為了提高容錯率药蜻,需要使用毫秒級的Unix時間戳瓷式。PHP不帶這個函數(shù),所以自己寫了一個语泽。
<?php
function msectime()
{
list($msec, $sec) = explode(' ', microtime());
return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
}
$type=substr($_FILES["file"]["name"],strrpos($_FILES["file"]["name"],"."));
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" .msectime().$type);
?>