const app = getApp(); /** * 选择并上传图片 * @param {number} count - 最多选择的图片数量 * @param {boolean} compressed - 是否压缩图片 * @returns {Promise} - 返回上传成功后的图片URL数组 */ export function uploadImage(count = 1, compressed = true) { return new Promise((resolve, reject) => { // 选择图片 uni.chooseImage({ count, sizeType: compressed ? ['compressed'] : ['original'], sourceType: ['album', 'camera'], success: (res) => { const tempFilePaths = res.tempFilePaths; const uploadPromises = tempFilePaths.map((tempFilePath) => uploadSingleImage(tempFilePath) ); // 并行上传所有图片 Promise.all(uploadPromises) .then(results => resolve(results)) .catch(error => reject(error)); }, fail: (err) => { console.error('选择图片失败:', err); reject(err); } }); }); } /** * 上传单张图片 * @param {string} filePath - 本地图片路径 * @returns {Promise} - 返回上传成功后的图片URL */ function uploadSingleImage(filePath) { return new Promise((resolve, reject) => { uni.uploadFile({ url: app.globalData.get_request_url('excel', 'xo'), // 上传地址 filePath, name: 'file', // 服务器接收的文件字段名 success: (res) => { if (res.statusCode === 200) { try { const data = JSON.parse(res.data); if (data.code === 0) { // 根据实际接口返回格式调整 resolve(data.data.url); // 返回图片URL } else { reject(new Error(data.message || '上传失败')); } } catch (e) { reject(new Error('解析响应数据失败')); } } else { reject(new Error(`服务器响应错误: ${res.statusCode}`)); } }, fail: (err) => { console.error('上传图片失败:', err); reject(err); } }); }); } /** * 预览图片 * @param {Array} urls - 图片URL数组 * @param {number} current - 当前预览的图片索引 */ export function previewImage(urls, current = 0) { uni.previewImage({ urls, current, fail: (err) => { console.error('预览图片失败:', err); } }); }