共两种方法
一般情况图片是直接上传图片服务器,但是在特定情况需要对视频进行切割,修改等操作
由于视频和图片上传处理一样,此处只介绍视频处理
1 uniapp自带的
### [uni.chooseVideo(OBJECT)](https://uniapp.dcloud.io/api/media/video?id=choosevideo)
方法,拍摄视频或从手机相册中选视频,返回视频的临时文件路径
由于某些时候需要用到原生input的文件对象---原生input拿到的视频为blob对象,即为一种进制流
此处把文件地址转为文件对象
利用
uni.request()
方法拿到文件流并转为base64
let base64 = wx.arrayBufferToBase64(ress.data); //把arraybuffer转成base64
base64 = 'data:image/jpeg;base64,' + base64 //不加上这串字符,在页面无法显示的哦
// 将base64转换为文件对象
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]);
var n = bstr.length;
var u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
// 转换成file对象
return new File([u8arr], filename, {type:mime});//FormData File
// 转换成成blob对象
// return new Blob([u8arr],{type:mime});
}
// 将图片转换为base64,再将base64转换成file对象
var file=dataURLtoFile(base64,'imgHeader')//两个参数为base64 和文件名
构造json传给后端就ok了
var formData = new FormData();
formData.append('key1',value1);
formData.append('file',file);
2还有一种粗暴的方法
<INPUT v-if="type==1" type="file" accept="video/*" @change="changeFile"></INPUT>
changeFile:function(e){
console.log(event.target.files[0]);
var file = event.target.files[0];
var url = URL.createObjectURL(file);
console.log(url);//本地路径
this.localVideoSrc=url;//用于展示
this.Resources=file;//文件对象
},
ok
有问题请指教~~~