import request from './request' const uploadFile = async (file, callback) => { const policyData = await request('admin/policy_token', 'post') const res = JSON.parse(policyData.token) const fileName = file.tempFilePath.split('/').pop(); // hello.png // const fileName = fileNameWithExt.split('.').slice(0, -1).join('.'); // hello const formData = { key: 'upload_file/' + fileName, //上传文件名称 policy: res.policy, //表单域 'x-oss-signature-version': res.x_oss_signature_version, //指定签名的版本和算法 'x-oss-credential': res.x_oss_credential, //指明派生密钥的参数集 'x-oss-date': res.x_oss_date, //请求的时间 'x-oss-signature': res.signature, //签名认证描述信息 'x-oss-security-token': res.security_token, //安全令牌 success_action_status: "200" //上传成功后响应状态码 }; // console.log(filePath) // return // 发送请求上传文件 wx.uploadFile({ url: 'https://image-fudan.oss-cn-beijing.aliyuncs.com/', method: 'put', filePath: file.tempFilePath, name: 'file', //固定值为file formData: formData, success(res) { console.log('上传响应:', res); if (res.statusCode === 200) { callback(null, 'https://image-fudan.oss-cn-beijing.aliyuncs.com/upload_file/' + fileName); // 上传成功 } else { console.error('上传失败,状态码:', res.statusCode); console.error('失败响应:', res); callback(res); // 上传失败,返回响应 } }, fail(err) { console.error('上传失败:', err); // 输出错误信息 wx.showToast({ title: '上传失败,请重试!', icon: 'none' }); callback(err); // 调用回调处理错误 } }); } const uploadFileToOSS = () => { return new Promise((resolve, reject) => { wx.chooseMedia({ count: 1, // 选择一个文件 mediaType: ['image'], sourceType: ['album', 'camera'], // type: 'all', // 支持所有类型的文件 success: (res) => { wx.showToast({ title: '文件上传中,请稍等!', icon: 'none' }); console.log('选择的文件:', res.tempFiles); // 输出选择的文件信息 if (res.tempFiles.length > 0) { const tempFilePath = res.tempFiles[0]; console.log('选择的文件路径:', tempFilePath); // 输出文件路径 uploadFile(tempFilePath, (error, data) => { if (error) { wx.showToast({ title: '上传失败!', icon: 'none' }); console.error('上传失败:', error); // 输出具体的错误信息 reject(error) } else { resolve(data) console.log('上传成功:', data); // 输出上传成功后的数据 } }); } else { wx.showToast({ title: '未选择文件!', icon: 'none' }); reject('未选择文件!') } }, fail: (err) => { wx.showToast({ title: '选择文件失败!', icon: 'none' }); console.error('选择文件失败:', err); // 输出选择文件的错误信息 reject('选择文件失败!') } }); }); }; export default uploadFileToOSS;