需求:通過介面返回的二進位流數據,這個流數據他是一個xlsx文檔,需要給到用戶一個文檔線上連接。 下麵是具體代碼,註意只針對二進位的文件數據,如果圖片上傳直接調用uploadFile就可以,並且相容原生微信小程式。 export function exportExcel1(query) { uni. ...
需求:通過介面返回的二進位流數據,這個流數據他是一個xlsx文檔,需要給到用戶一個文檔線上連接。
下麵是具體代碼,註意只針對二進位的文件數據,如果圖片上傳直接調用uploadFile就可以,並且相容原生微信小程式。
export function exportExcel1(query) { uni.showLoading({ title: '正在導出...', mask: true }); // 這個是get介面參數 setUrlQuery 是我自定義的函數封裝 主要是拼接url參數的 let obj = { "personnelIdList":state.personnel.list.map((item)=>item.personnelId), "projectId":store.project.projectId, ...query }; // 調用介面 獲取二進位流 進行下載並且獲取臨時文件地址 uni.downloadFile({ url:env.ApiUrl+'/personnel/laborer/exportExcel'+uni.setUrlQuery(obj), header: { 'content-type': 'application/json', 'Authorization' : 'Bearer ' + storage.getItem('Authorization') }, success(res){ let tempFilePath = res.tempFilePath; // 獲取微信返回的臨時系統文件地址 uni.uploadFile({ url: env.ApiUrl + 'xxx', // 上傳文件介面 formData: {}, // 除文件外其他所有數據,傳對象,會預設轉換為 FormData filePath: tempFilePath, // 上傳臨時的系統文件地址 header: { 'content-type': 'application/json', 'Authorization' : 'Bearer ' + storage.getItem('Authorization') }, name: 'file', // 註意與後端約定的欄位名稱 success(res){ uni.hideLoading(); // 彈窗提示導出成功 用戶點擊確定複製url文件地址 uni.showModal({ title: '導出成功', content: '已生成當前列表人員數據文檔!', cancelText: '取消', confirmText: '複製URL', success: function (res) { if (res.confirm) { // 獲取url 進行複製 uni.setClipboardData({ data:result, success() {}, }); } } }); // 文件預覽 // uni.openDocument({ // filePath: 'url',// 可以是微信給的系統臨時url地址,也可以是正式的線上地址 // success: (sus) => { // console.log('成功打開'); // }, // }); } }); } }); };