js预览本地资源

浏览器中的JavaScript不能直接直接访问本地资源(例如文件系统,摄像头,麦克风等),除非事先得到了用户的允许。浏览器之所以进行该限制也是很有必要的,试想一下,如果JavaScript能够肆无忌惮的访问本地的文件系统,那么窃取用户隐私数据就变得轻而易举了,当用户访问网络上的某个网页时,不知不觉中自己机器上保存的信用卡卡号,密码,公司的秘密文件等隐私文件或许已经被恶意的JavaScript程序上传到了远方的服务器上,这对用户来说是不可容忍的。

在得到用户允许后我们还是可以播放本地文件的,下面介绍一种方法。

在页面中插入一个input节点并指定type为file,如果需要播放多个文件,可以添加属性multiple。注册文件节点被更新时的回调函数,在回调函数中调用URL.createObjectURL函数来获取刚选择文件的url,然后把该url设置为audio、video或img的src值即可。

  1. <html>  
  2. <body>  
  3. <input type="file" id="file" onchange="play.call(this)">  
  4. <audio id="audio_id" controls autoplay loop>Your browser can't support HTML5 Audio</audio>  
  5. <script>
  6. var url;  
  7. function fileChange() {
  8.    URL.revokeObjectURL(url); 
  9.    var file = document.getElementById('file').files[0];  
  10.    var url = URL.createObjectURL(file);  
  11.    console.log(url);  
  12.    document.getElementById("audio_id").src = url;  
  13. } 
  14. function createObjectURL(object) {
  15. window.URL?window.URL.revokeObjectURL(url):window.webkitURL.revokeObjectURL(url);
  16. url=(window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
    return url;
    }
    function play(){
  17.     var video=document.getElementById("audio_id");
        if(this.files.length) {
          video.src = createObjectURL(this.files[0]);
        }
    }
      


  18. </script>  
  19. </body>  
  20. </html>  


相关链接: https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL#Browser_compatibility
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值