0

以下の要件について助けが必要です。

  • 巨大なマルチパート csv ファイルを Web サーバーからダウンロードし、クライアント側でそれらの部分を結合してから、ユーザーに対して開きます。
  • ダウンロードする前に、パーツの数を取得し、それらの URL を Web サーバーから取得できます。
  • クライアントブラウザで行う必要があるため、javascriptが最良の選択だと思います。
  • ユーザーは IE をプライマリ ブラウザとして使用していますが、セキュリティ設定を変更するように依頼することはできません (vbscript/activxcontrol は機能しません)。
4

1 に答える 1

0

これを使用する以外に選択肢がない場合は、集計を使用できます。

var data; // will contain the retrieved data

/**
 * Grab data from the first URL in the list, adding it
 * to the global data variable. If the list is empty,
 * we got all the data and we succeed. If an XHR fails, we fail.
 */
function prepData(urlList, success, fail) {
  if(urlList.length===0) {
    succes(); // wrap in timeout if you need to break out of call chain
    return;
  }
  var xhr = new XMLHttpRequest();
  var url = urlList.splice(0,1)[0];
  xhr.open("GET", url, true);
  xhr.onreadystatechange = function() {
    if (xhr.status === 200 && xhr.readyState === 4) {
      data += xhr.responseText;
      prepData(urlList, success, fail);
    } else {
      fail(urlList, xhr);  // again, wrap in timeout to break out of call chain
    }
  }
}

次に、次のようなコードでこれを呼び出すことができます。

/**
 * prepare our data prior to application "start"
 */
prepData(['...','...','...'], function (){
  console.log("finished aggregating data");
  // all went well. Start the actual data-consuming code
}, function(notLoadedList, failedXhrObject){
  console.log("ohnoes!", notLoadedList, failedXhrObject);
  // something went wrong, and we can fail gracefully
});
于 2013-02-23T20:48:44.900 に答える