0

有一个要求,当用户上传时,file它应该以下列方式工作

1)文件上传对话框(在浏览器中)呈现给用户。用户选择一个文件。2) 应用程序应该只加载前 x 条记录(例如,假设总记录数为 100,然后获得前 10 条),用户将有机会对记录进行视觉审查(只读视图)。3)然后用户决定两件事之一:“单击提交”,它将接收所有数据并流到服务器,或者如果她/他单击“下一步”,她/他可以查看接下来的 10 条记录等。

Scalaz-stream是否适合作为整体解决方案,特别是从上面执行 2) 和 3)?要仅获取部分数据并暂停流,然后继续、使用并重复该过程?

4

1 回答 1

1

不,scalaz-stream 不是一个好主意。表演!框架有自己的框架,包括EnumeratorEnumerateeIteratee类,可用于流的异步处理,并且文件上传代码已经构建为使用它。

你有两个选择:

一,使用 HTML5 和前端 Javascript 来访问文件。这仅适用于最新的浏览器。如果您不希望在用户选择“提交”之前上传任何文件,这是唯一的选择。

第二,使用框架增量解析上传到服务器的上传Enumerator,并在解析时使用记录子集通过长轮询 AJAX/Comet/Websocket 响应前端 Javascript。正在解析传入上传的Iteratee将不得不暂停并等待来自前端的进一步输入。这个解决方案会很复杂,并且会遇到浏览器超时的问题。

这些都不是一个好主意。将整个文件一次性上传,然后将解析后的记录反馈到前端,并让“提交”按钮实际上起到“保存”按钮的作用,告诉服务器保留收到上传。除非您将 100 个 MiB+ Excel 文件推送到移动连接上,否则这可能是最简单和最兼容的解决方案。

于 2014-07-01T05:57:29.903 回答