预览上传图片、视频——createObjectURL

2019-5-5    分类: 前端资源

预览 上传图片 视频 预览

html:

<video src="" id="video0" controls="controls"></video>

<input type="file" id="video" name="video"/>

 

js代码:

// hTML5实现表单内的上传文件框,上传前预览视频,刷新预览video,使用HTML5 的File API,
// 建立一个可存取到该file的url,一个空的video标签,ID为video0,把选择的文件显示在video标签中,实现视频预览功能。
// 需要选择支持HTML API的浏览器。
$("#video").change(function(){
   var objUrl = getObjectURL(this.files[0]) ;

   if (objUrl) {
      $("#video0").attr("src", objUrl) ;
      //img.src=objUrl ,图片预览也类似
   }
}) ;


//建立一个可存取到该file的url,  createObjectURL兼容处理
function getObjectURL(file) {
  var url = null ;
  if (window.createObjectURL!=undefined) { // basic
    url = window.createObjectURL(file) ;
  } else if (window.URL!=undefined) { // mozilla(firefox)
    url = window.URL.createObjectURL(file) ;
  } else if (window.webkitURL!=undefined) { // webkit or chrome
    url = window.webkitURL.createObjectURL(file) ;
  }
  return url ;  //输出格式 blob:http://localhost:8082/dd56dfec-12ef-4532-ae88-f1a2e6802f2c
}

 

 

上传 blob格式的内容

var formData = new FormData();
formData.append("type","2");  //提交type=2的值给后台
formData.append("file",blob,"recorder.mp3");  //提交blob数据给后台

// console.log(formData.values());
for (var value of formData.values()) {
console.log(value);
}


$.ajax({
 url:"xxx" //上传接口地址
 ,type:"POST"
 ,contentType:false //让xhr自动处理Content-Type header,multipart/form-data需要生成随机的boundary
 ,processData:false //不要处理data,让xhr自动处理
 ,data:formData
 ,success:function(v){
    console.log("上传成功",v);
 }
 ,error:function(s){
   console.error("上传失败",s);
 }
});