在服务器端,有文件操作的readline,这对于大文件进程非常方便。但是,这不适用于浏览器端,如何在浏览器端逐行读取大文件?或者我怎么能上传一个不能放入RAM的超大文件?
答案 0 :(得分:4)
有一个LineSplitter类似乎是为https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-convert.LineSplitter
设计的你可以像
一样使用它import 'dart:convert';
import 'dart:io';
void main() {
new HttpClient().getUrl(
Uri.parse('http://www.gutenberg.org/files/45776/45776-h/45776-h.htm'))
.then((r) => r.close())
.then((HttpClientResponse response) => handleResponse(response));
}
void handleResponse(HttpClientResponse response) {
LineSplitter ls = new LineSplitter();
ls.bind(UTF8.decoder.bind(response)).listen((e)=> print('=====${e}====='));
}
使用@lrn
建议的变换的替代解决方案void main() {
new HttpClient().getUrl(
Uri.parse('http://www.gutenberg.org/files/45776/45776-h/45776-h.htm'))
.then((r) => r.close())
.then((HttpClientResponse response) {
response.transform(UTF8.decoder)
.transform(new LineSplitter())
.listen((e) => print('====${e}===='));
});
}
在浏览器中,我遗漏了将ProgressEvent
转换为Stream<String>
的内容
也许别人知道更多。
这似乎只有WebSockets支持,但不支持HttpRequest。