0

ユーザーがアップロードしているときfileに、次のように動作する必要があるという要件があります

1) ファイル アップロード ダイアログ (ブラウザ内) がユーザーに表示されます。ユーザーがファイルを選択します。2) アプリケーションは最初の x 個のレコードのみをロードする必要があり (たとえば、レコードの総数が 100 の場合、最初の 10 個を取得するとします)、ユーザーはレコードを視覚的に確認できます (読み取り専用ビュー)。3) 次に、ユーザーは次の 2 つのいずれかを決定します。「送信をクリック」すると、すべてのデータとサーバーへのストリームが取り込まれます。または、「次へ」をクリックすると、次の 10 レコードを確認できます。

Scalaz -streamは全体的なソリューションとして、特に上記の 2) と 3) を実行するのに適していますか? 部分的なデータのみを取得してストリームを一時停止し、プロセスを継続して消費し、繰り返すには?

4

1 に答える 1

1

いいえ、scalaz-stream は良い考えではありません。遊び!フレームワークには、ストリームの非同期処理に使用できる、、およびクラスを備えた独自のフレームワークがあり、ファイル アップロード コードはそれを使用するように既にビルドされています。EnumeratorEnumerateeIteratee

次の 2 つのオプションがあります。

1 つは、HTML5 とフロントエンド Javascript を使用してファイルにアクセスすることです。これは、最新のブラウザでのみ機能します。これは、ユーザーが [送信] を選択するまでファイルをアップロードしたくない場合の唯一のオプションです。

2 つ目は、フレームワークを使用してアップロードがサーバーに送信されると段階的に解析し、Enumeratorロング ポーリングの AJAX/Comet/Websocket を介してフロントエンドの Javascript に応答し、解析されたレコードのサブセットを使用することです。着信アップロードを解析している は一時停止して、フロントエンドからのIterateeさらなる入力を待つ必要があります。このソリューションは複雑で、ブラウザのタイムアウトの問題が発生する可能性があります。

これらはどちらもあまり良い考えではありません。ファイル全体を一度にアップロードし、解析されたレコードを後でフロントエンドにフィードバックし、「送信」ボタンを実際に「保存」ボタンとして機能させて、サーバーに保存するように指示する方がはるかに簡単です。アップロードを受け取りました。100 MiB 以上の Excel ファイルをモバイル接続に押し込む場合を除き、これがおそらく最も簡単で互換性のあるソリューションです。

于 2014-07-01T05:57:29.903 に答える