83 lines
2.1 KiB
JavaScript
83 lines
2.1 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
} |