105 lines
3.9 KiB
JavaScript
105 lines
3.9 KiB
JavaScript
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; |