共兩種方法
一般情況圖片是直接上傳圖片服務(wù)器,但是在特定情況需要對(duì)視頻進(jìn)行切割,修改等操作
由于視頻和圖片上傳處理一樣,此處只介紹視頻處理
1 uniapp自帶的
### [uni.chooseVideo(OBJECT)](https://uniapp.dcloud.io/api/media/video?id=choosevideo)
方法,拍攝視頻或從手機(jī)相冊(cè)中選視頻,返回視頻的臨時(shí)文件路徑
由于某些時(shí)候需要用到原生input的文件對(duì)象---原生input拿到的視頻為blob對(duì)象,即為一種進(jìn)制流
此處把文件地址轉(zhuǎn)為文件對(duì)象
利用
uni.request()
方法拿到文件流并轉(zhuǎn)為base64
let base64 = wx.arrayBufferToBase64(ress.data); //把a(bǔ)rraybuffer轉(zhuǎn)成base64
base64 = 'data:image/jpeg;base64,' + base64 //不加上這串字符,在頁(yè)面無(wú)法顯示的哦
// 將base64轉(zhuǎn)換為文件對(duì)象
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);
}
// 轉(zhuǎn)換成file對(duì)象
return new File([u8arr], filename, {type:mime});//FormData File
// 轉(zhuǎn)換成成blob對(duì)象
// return new Blob([u8arr],{type:mime});
}
// 將圖片轉(zhuǎn)換為base64,再將base64轉(zhuǎn)換成file對(duì)象
var file=dataURLtoFile(base64,'imgHeader')//兩個(gè)參數(shù)為base64 和文件名
構(gòu)造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;//文件對(duì)象
},
ok
有問(wèn)題請(qǐng)指教~~~