首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型演示文稿文件的GetFileAsync导致内存不足

大型演示文稿文件的GetFileAsync导致内存不足
EN

Stack Overflow用户
提问于 2017-08-14 14:05:45
回答 1查看 124关注 0票数 0

我正在开发一个具有上传演示文稿到web服务器的功能的PowerPoint插件。我有一个100MB大小的演示文稿。我使用了在Office文档中使用GetFileAsync的指南。它适用于小的演示文稿文件。但是当我选择主要的演示文件时,插件消息没有响应。我确实打断了代码,我发现没有响应的原因是由于大型数组切片导致的js。获取大文件的分片是没有问题的。但是当切片数组合并为一个数组时的问题。

以下代码来自发生问题的Office文档。

代码语言:javascript
复制
function onGotAllSlices(docdataSlices) {
  var docdata = [];

  for (var i = 0; i < docdataSlices.length; i++) {
    docdata = docdata.concat(docdataSlices[i]);
  }

  var fileContent = new String();

  for (var j = 0; j < docdata.length; j++) {
    fileContent += String.fromCharCode(docdata[j]);
  }

  // Now all the file content is stored in 'fileContent' variable,
  // you can do something with it, such as print, fax...
}

我不知道这是错误还是Office外接程序的问题。我希望有人能帮助我。

提前谢谢。

更新:

我像这样简化了给定的函数:

代码语言:javascript
复制
function onGotAllSlices(docdataSlices) {

  var fileContent = new String();

  for(var i = 0; i < docdataSlices.length; i++) {
    var docdata = docdataSlides[i];

    for(var j = 0; j < docdata.length; j++) {
      fileContent += String.fromCharCode(docdata[j]);
    }
  }

  var base64String = window.btoa(fileContent);
}

到目前为止,根本没有“内存不足”的问题。但在base64String中执行fileContent转换时,错误消息'8007000e‘还有另一个问题:’没有足够的存储空间可用来完成此操作‘。

EN

回答 1

Stack Overflow用户

发布于 2017-08-15 17:23:51

这看起来像是性能问题。你选中How to extend an existing JavaScript array with another array, without creating a new array?了吗?.concat将从前面的两个数组中创建一个新的数组,你正在重新分配它。也许有更好的方法来做这件事呢?

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

https://stackoverflow.com/questions/45668301

复制
相关文章

相似问题

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