在微信小程序端是無法直接下載文件的,對於docx、excel、pdf等文件都是通過臨時緩存+打開的方式保存到本地
默認下載
const openFile = (url,fileType) => {
uni.downloadFile({
url: url,
success: function (res) {
let filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
fileType,
showMenu: true,
success: function (res) {
console.log('打開文檔成功', res);
},
fail: function (err) {
console.log('打開失敗', err);
}
});
}
});
};
通過 url + 文件類型 即可實現文件打開和下在,這種方式下載的文件名是微信自動生成的一串字符。
自定義文件名下載
直接調用下面這個函數即可,傳入url、文件類型、文件名稱
/**
* 文件打開和下載
* @param {string} url 文件下載鏈接
* @param {string} fileType 文件類型
* @param {string} fileName 文件名稱
*/
export const openFile = (url, fileType, fileName) => {
// 下載到臨時地址
uni.downloadFile({
url,
filePath:`${uni.env.USER_DATA_PATH}/${fileName}`, // 自定義文件名
success: function (res) {
let filePath = res.filePath; // 自定義filePath後,filePath為臨時地址路徑
// 打開文件
uni.openDocument({
filePath: filePath,
fileType, // 文件類型
showMenu: true,
success: function (res) {
console.log('打開文檔成功', res);
},
fail: function (err) {
console.log('打開失敗', err);
}
});
}
});
};
調用
openFile(url.value, 'pdf', `自定義名稱`);
uni.env.USER_DATA_PATH是固定值,代表用户文件目錄
通過這種方式可以自定義文件名,打開文件後,點擊右上角可轉發好友或保存到本地
參考文檔:
uni.downloadFile
uni.openDocument
本地用户文件
uni.env.USER_DATA_PATH