2017-08-14 10 views
0

Webサーバーにプレゼンテーションをアップロードする機能を持つPowerPointアドインを開発しています。私は100MBの正確なサイズのプレゼンテーションを持っています。私は、OfficeドキュメントでGetFileAsyncを使用するためのガイドラインを使用しました。それは小さなプレゼンテーションファイルのために働いています。しかし、私は主にプレゼンテーションファイルを選択すると応答しないというアドインメッセージが表示されます。私はコードを壊してしまいました。大きな配列スライスのために応答しない原因がjsにあることがわかりました。大きなファイルのスライスを取得することに問題はありません。しかしスライス配列concatを1つの配列にするときの問題。大きなプレゼンテーションファイルのGetFileAsyncがメモリ不足のため

ここでは、問題が発生したOfficeドキュメントのコードがあります。

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アドインのバグか問題であるかどうかわかりません。誰かが私を助けてくれることを願っています

ありがとうございます。

UPDATES:

私はこのような特定の機能を簡素化:

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); 
} 

これまでのところ、 'メモリのうち' 問題は全くありませんが。しかし、 '8007000e'というエラーメッセージの問題もあります。 "fileContentがbase64Stringで変換するとき、"この操作を完了するのに十分なストレージがありません "。

答えて

0

これはパフォーマンスの問題のようです。 How to extend an existing JavaScript array with another array, without creating a new array?をチェックしましたか? .concatは、前の2つの配列から新しい配列を作成し、再割り当てします。おそらくこれを行うためのより良い方法がありますか?

+0

ありがとうございます。私はそれを試しても、まだメモリの問題があります。 jsやブラウザで使用されるメモリを設定または拡張することは可能ですか?ウィンドウズクライアントベースのMS OfficeホストIE(私はバージョンを知らない)。 – dhaz

+0

私はそれが可能な仲間だとは思わない –

関連する問題