基于 uniapp 的应用上传图片/视频 资源的实现:
功能涉及的主要 uniapp API 如下:
1.选择图片:(OBJECT) | uni-app官网
2.选择视频:(OBJECT) | uni-app官网
3.上传文件:(OBJECT) | uni-app官网
下面分别贴出示例代码:
上传图片
// 上传图片
async chooseImages() {
({
mask: true,
title: '上传中...'
})
// uploadFile 存储需要上传的文件
let uploadFile = ''
// 1.选择图片(这里只能单选)
const res = await ({
count: 1, // 最多可以选择的图片张数,默认9
// sizeType: ['compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album'], // album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
});
// ('res:', res);
if( < 2) { // 小于2则没有选择图片
()
return
}
uploadFile = res[1].tempFilePaths[0]; // 拿到选择的文件
var that1 = this;
// 2.将选择的图片上传到目标服务器
const arr = await ({
// 需要上传的地址
url: that1.vuex_uploadAction,
// filePath 需要上传的文件
filePath: uploadFile,
name: 'file',
timeout: 2000, // 超时时间
header: { // HTTP 请求 Header, header 中不能设置 Referer。
token: that1.vuex_token // 挂载请求头为用户的 token
},
});
// (arr);
let data = (arr[1].data)
('data:', data);
if( !== 1) { // 图片上传失败了
()
that1.$()
return
}
// 上传成功(把上传成功后的文件路径 push 到页面需要显示的图片数据列表中)
()
.photo_url.push()
// ();
()
},
注:示例代码已封装为一个方法,可直接调用,需要自定义之处可自行参照 API 文档修改,比如从相册选图还是打开相机拍照、可上传的图片数量等
上传视频
// 上传视频
async chooseVideo() {
({
mask: true,
title: '上传中...'
})
// uploadFile 存储需要上传的文件
let uploadFile = ''
// 1.选择要上传的视频
const res = await ({
maxDuration: 60, // 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
sourceType: ['album'], // album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
});
uploadFile = res[1].tempFilePath;
// (uploadFile);
var that2 = this;
// 2.上传所选视频到服务器
const arr = await ({
// 需要上传的地址
url: that2.vuex_uploadAction,
// filePath 需要上传的文件
filePath: uploadFile,
name: 'file',
header: {
token: that2.vuex_token // 挂载请求头为用户的 token
},
});
let data = (arr[1].data)
('data:', data);
if( !== 1) { // 视频上传失败了
()
that1.$()
return
}
// 上传成功(把上传成功后的文件路径 push 到页面需要显示的视频数据列表中)
=
.video_url =
()
}
扩展
uniapp 还整合提供了上传媒体文件(图片/视频)的 API: 可用于上传图片和视频。若有兴趣可自行打开链接测试使用。