• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

web 另类方法实现“另存为”功能

前端 开心洋葱 1333次浏览 0个评论

web 另类方法实现“另存为”功能

代码:


  <div class="container-fluid">
    <div class="row">
      <div class="col-md-3">
        <div class="form-group">
          <label>文件内容</label>
          <textarea class="form-control" rows="4" id="content">测试文本,你可以随便修改,完事后点保存。</textarea>  
        </div>

        <div class="form-group">
          <label>文件名</label>
          
        </div>

        <a id="save-btn" class="btn btn-default" role="button">保存</a>
      </div>
    </div>
  </div>

  
    void function(){
      var content, fileName, saveBtn;

      content = document.querySelector( '#content' );
      fileName = document.querySelector( '#file-name' );
      saveBtn = document.querySelector( '#save-btn' );

      content.addEventListener( 'change', function self(){
        saveBtn.setAttribute( 'href', 'data:text/paint; utf-8,' + content.value );
        return self;
      }() );

      fileName.addEventListener( 'change', function self(){
        saveBtn.setAttribute( 'download', fileName.value );
        return self;
      }() );
    }();
  

原理讲解:

HTML5 的 FileReader 带给我们很强大的文件只读访问能力,可是在 HTML5 新增的 JS 中却没有发现有方便的另存到本地文件的相关 API,以往的办法要么调用浏览器的 save as 命令(兼容程度不详),要么将内容提交到服务器,由服务器附加 content-type: application/octet-stream 头并原文打回来实现。

偶然间,发现 HTML5 的 标签有了一个新属性,叫 download,取值是一个文件名,当一个带有 download 属性的 链接被点击时,其形为不再是一个网页跳转,而变成将目标以指定的文件名另存到本地,兼容性还不错的样子。

可是你想啊, 的 href 值是可以随便改的,也就是说要另存的文件内容可以通过 JS 的方式轻松生成,对其指定一个 datauri 就可以决定要保存的文件内容了,配合 base64,甚至可以产生一个二进制文件!

原理简单,实现无比容易,就不在这儿贴代码了,戳我可以看看 live demo。


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明web 另类方法实现“另存为”功能
喜欢 (0)

您必须 登录 才能发表评论!

加载中……