更新记录
1.0.1(2021-06-25) 下载此版本
初次提交
平台兼容性
Vue2 | Vue3 |
---|---|
√ | × |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
app-vue app-nvue | × | √ | √ | √ | √ | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | × | × | √ | × | × | √ | √ |
第一步:辅助函数
// 添加文件名后缀方法,例如 .png
function getSuffix(filename) {
let pos = filename.lastIndexOf('.');
let suffix = '';
if (pos != -1) {
suffix = filename.substring(pos);
}
return suffix;
}
// 自定义文件夹(file)
function getFileName(file, filename) {
return (
file + Math.random()
.toString(36)
.substring(3, 20) + new Date().getTime() +
getSuffix(filename)
);
}
第二步:暴露出的图片上传函数;
// 选择上传图片
export function uploadImg(file) {
return new Promise((resolve, reject) => {
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], //从相册选择
success: function(res) {
let Imgsrc = res.tempFilePaths[0];// 第一张图片
let fileName = getFileName(file, Imgsrc); // 自定义上传后的文件名称
fileUpload("image", Imgsrc, fileName).then(res => { // 核心函数 请往下看
resolve(res)
}).catch(err => {
reject(err)
});
}
})
})
}
第三步:文件上传核心函数;
// 文件上传
function fileUpload(type, path, stroeAs) {
uni.showLoading({
title: '文件上传中'
});
return new Promise((resolve, reject) => {
uni.request({
url: 'xxxxxxxxxxxxxxxxxxxxx', //向后端发送请求,获取签名地址以及相关信息。
complete: res => {
var data = res.data;
uni.uploadFile({
url: data.host, //后台返回的阿里云存储的上传地址
filePath: path,
fileType: type,
name: 'file',
formData: {
key: stroeAs, //文件名
policy: data.policy, //后台获取超时时间
OSSAccessKeyId: data.accessid, //后台获取临时ID
success_action_status: '200', //让服务端返回200,不然,默认会返回204
signature: data.signature //后台获取签名
},
success: res => {
uni.hideLoading();
uni.showToast({
title: '上传成功',
icon: 'success',
duration: 2000
});
resolve(data.host + stroeAs) // 返回保存在阿里oss上的地址
},
fail: err => {
reject(err)
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
});
}
})
});
}
第四步:暴露出的视频上传函数;
export function uploadVid(file) {
return new Promise((resolve, reject) => {
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
success: function(res) {
let videoSrc = res.tempFilePath;
if (res.size > 1024 * 1024 * 15) {
uni.showToast({
title: '文件大小超过系统上传限制:15M',
icon: 'none',
duration: 1000
});
return;
}
let fileName = getFileName("video", file, videoSrc);
fileUpload("video",Imgsrc, fileName).then(res => {
resolve(res)
}).catch(err => {
reject(err)
});
},
fail: (err) => {
reject(err)
uni.showToast({
title: '取消选择视频',
icon: 'none',
duration: 2000
});
}
})
})
}
文件下载地址:0积分下载
相关说明
参数 | 类型 | 说明 |
---|---|---|
file | String | 要存放的文件夹名;例如 .../imageList/ |
filename | Blob | 被选中的图片或者视频文件名 |
type | String | image 或者 video |
path | Blob | 同filename被选中的本地图片或视频文件 |
stroeAs | String | 自定义文件名;例如 .../imageList/xxxx.png |
点赞 评论 收藏 ~~ 有疑惑的小伙伴,可能是我表达不清楚,可以留言讨论,如有错误,也希望大家不吝指出。 ~~ 点赞 评论 收藏