lury
lury
  • 发布:2017-08-15 02:16
  • 更新:2017-08-15 02:16
  • 阅读:5343

录音后,如何上传录音到服务器,使用阿里云对象存储

分类:HTML5+

录音后,如何上传录音到服务器,使用阿里云对象存储

之前只用过表单file,通过change事件得到file对象,然后上传,现在问题是,录音不是选择文件,得不到一个file域对象。

阿里云对象存储,上传e跟平时写法无异,比如我现在后台管理系统中上传图片和文件如下面的js代码,

在hbuilder中录音成功后,可以得到 完整的路径,得到一个叫entry的对象,本以为把entry当传统的file对象就可以了,报错:[LOG] : TypeError: null is not a valid argument for 'instanceof' (evaluating 'e instanceof File')  

求教!如何用代码去上传这个录音文件,不能让用户选择文件,只能是用户录音完成后,听录音,ok满意了,就点上传按钮!

<script>
var imghost="阿里云存储地址";
var client = new OSS.Wrapper({
region: 阿里云存储区域杭州上海等',
accessKeyId: '对象存储的id',
accessKeySecret: '秘钥',
bucket: '类似文件夹的东西吧'
});
document.getElementById(imgUpload').addEventListener('change', function (e) {
var file = e.target.files[0];
var index1=file.name.lastIndexOf(".");
var index2=file.name.length;
var suffix=file.name.substring(index1+1,index2);//后缀名
var newDate=new Date(); var m=newDate.getMonth()<10?'0'+(newDate.getMonth()+1):(newDate.getMonth()+1);
var dateStr=newDate.getFullYear()+"-"+m+"-"+newDate.getDate();
var storeAs = "audio/"+dateStr+"/"+random_string(10)+"."+suffix;
loading('正在上传,请稍等...');
client.multipartUpload(storeAs, file).then(function (result) {
$.jBox.tip('上传成功!', 'success');
window.parent.window.jBox.closeTip();
$("#${id}IdPic").val(imghost+"/"+storeAs);
$("#${id}img").attr('src',imghost+"/"+storeAs);
$("#${id}img").css('display','block');
}).catch(function (err){
console.log(err);
});

});
function random_string(len) {
  len = len || 32;
  var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  var maxPos = chars.length;
  var pwd = '';
  for (i = 0; i < len; i++) {
  pwd += chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
}
</script>

2017-08-15 02:16 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复