微信小程序下載視頻或者照片或者文件到本地相冊中

 

 

/**

* 下載單個文件
*/
function downloadFile(type, url, successc, failc) {
checkAuth(() => {
wx.showLoading({
title: '正在下載',
mask: true
})
downloadSaveFile(
type,
url,
() => {
wx.hideLoading();
wx.showToast({
title: '下載成功',
icon: 'none',
})
successc && successc();
},
(errMsg) => {
wx.hideLoading();
wx.showToast({
title: errMsg,
icon: 'none',
})
failc && failc();
}
);
})
}

/**
* 下載多個文件
*/
function downloadFiles(type, urls, completec) {
let success = 0;
let fail = 0;
let total = urls.length;
let errMsgs = [];

checkAuth(() => {
wx.showLoading({
title: '正在下載',
mask: true
})
for (let i = 0; i < urls.length; i++) {
downloadSaveFile(
type,
urls[i],
() => {
success++;
if (success + fail === total) {
saveCompleted(success, fail, completec, errMsgs);
}
},
(errMsg) => {
fail++;
errMsg && errMsgs.push(`視頻${i}${errMsg}`);
if (success + fail === total) {
saveCompleted(success, fail, completec, errMsgs);
}
}
);
}
})
}

//保存完成
function saveCompleted(success, fail, completec, errMsgs) {
wx.hideLoading();
let errMsg = '無';
if (errMsgs.length) {
errMsg = errMsgs.join('\n');
}

wx.showModal({
title: `成功${success}項,失敗${fail}項`,
content: `失敗信息:\n${errMsg}`,
showCancel: false,
success(res) {
if (res.confirm) {
completec && completec();
}
}
})
}

//下載文件
function downloadSaveFile(type, url, successc, failc) {
wx.downloadFile({
url: url,
success: res => {
if (res.statusCode === 200) {
if (type === 'video') {
//類型爲視頻
wx.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success: res => {
successc && successc();
},
fail: res => {
failc && failc('保存失敗');
}
})
} else if (type === 'image') {
//類型爲圖片
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: res => {
successc && successc();
},
fail: res => {
failc && failc('保存失敗');
}
})
}else if(type==='file'){
wx.saveFile({
tempFilePath: res.tempFilePath,
success(res) {
const savedFilePath = res.savedFilePath
console.log(res)
}
})
}
} else {
failc && failc('狀態碼非200');
}
},
fail: res => {
failc && failc('下載失敗');
}
})
}

//檢查權限
function checkAuth(gotc) {
//查詢權限
wx.showLoading({
title: '檢查授權情況',
mask: true
})
wx.getSetting({
success(res) {
wx.hideLoading();
if (!res.authSetting['scope.writePhotosAlbum']) {
//請求授權
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
//獲得授權,開始下載
gotc && gotc();
},
fail() {
wx.showModal({
title: '',
content: '保存到系統相冊需要授權',
confirmText: '授權',
success(res) {
if (res.confirm) {
wx.openSetting({
success(res) {
if (res.authSetting['scope.writePhotosAlbum'] === true) {
gotc && gotc();
}
}
})
}
},
fail() {
wx.showToast({
title: '打開設置頁失敗',
icon: 'none',
})
}
})
}
})
} else {
//已有授權
gotc && gotc();
}
},
fail() {
wx.hideLoading();
wx.showToast({
title: '獲取授權失敗',
icon: 'none',
})
}
})
}

module.exports = {
downloadFile,
downloadFiles
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章