首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript base64转换

Javascript base64转换
EN

Stack Overflow用户
提问于 2016-04-06 15:36:36
回答 1查看 82关注 0票数 0

我相信我的求助者很容易。我需要创建一个代码来获得FileReader函数中的base64内容发送到数据库。我尝试将base64字符串和表单类型放入hidden,但我做不到。我上传的源代码如下:

JSFIDDLE

代码语言:javascript
复制
<script type="text/javascript">
  function readMultipleFiles(evt) {
    //Retrieve all the files from the FileList object
    var files = evt.target.files; 

    if (files) {
        for (var i=0, f; f=files[i]; i++) {
              var r = new FileReader();
            r.onload = (function(f) {
                return function(e) {
                    var contents = e.target.result;
                    alert( 
                          "name: " + f.name + "n"
                          + "starts with: " + contents.substr(1, contents.indexOf("n"))
                    ); 
                    document.write(f.name);
                };
            })(f);

            r.readAsText(f);
        }   
    } else {
          alert("Failed to load files"); 
    }
  }

  document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
</script>
EN

回答 1

Stack Overflow用户

发布于 2016-04-06 15:44:20

尝试使用MDN中的函数,它也应该支持unicode:

代码语言:javascript
复制
function readMultipleFiles(evt) {
    //Retrieve all the files from the FileList object
    var files = evt.target.files; 

    if (files) {
        for (var i=0, f; f=files[i]; i++) {
              var r = new FileReader();
              r.onload = (function(f) {
                return function(e) {
                    var contents = e.target.result;
                    alert( 
                          "name: " + f.name + "n"
                          + "starts with: " + contents.substr(1, contents.indexOf("n"))
                    ); 
                    document.getElementById('b64').innerHTML = b64EncodeUnicode(contents);
                };
            })(f);

            r.readAsText(f);
        }   
    } else {
          alert("Failed to load files"); 
    }
}

document.getElementById('fileinput').addEventListener('change',
                                          readMultipleFiles, false);
function b64EncodeUnicode(str) {
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, 
              function(match, p1) {
                  return String.fromCharCode('0x' + p1);
              }));
}

备注:

我用一个ascii文件和https://www.base64encode.org/

  • Removed
  • document.write测试了上面的代码。相反,结果显示在(document.getElementById('b64').innerHTML = ...)
  • As为id="b64“的span中,将仅适用于1个文件。需要对document.write进行少量编辑或放回以支持多个文件

小提琴:https://jsfiddle.net/g6g1a51p/4/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36444430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档