使用 Dart 中的 resumable.js

Using resumable.js from Dart

我正在尝试使用 Dart 中的 resumable.js 代码:

var rs = new JS.JsObject(JS.context['Resumable'], [new JS.JsObject.jsify({
  'target':context.server+'/upload'
})]);

files.forEach((file) {
  rs.callMethod("addFile",[file]);
});

files 变量定义为 List<File> (dart.html.File)。当我用这两行检查 rs 对象的属性时:

JS.context["console"].callMethod("log",[rs['opts']]);
JS.context["console"].callMethod("log",[rs['files']]);

我发现 rs.opts 被正确初始化,但是 rs.files 总是包含长度为 1 的 ResumableFile 的实例。我猜这是因为方法 addFile 期望参数是实例Javascript File 但它得到 instanceof dart:html.File.

你知道如何将 dart:html.File 转换为 Javascript File 或如何将参数传递给 resumable.js 吗?

我知道我可以选择使用方法 assignBrowseassignDrop,但我想坚持我的解决方案。

必须使用JsObject.fromBrowserObject获取底层js对象

files.forEach((file) {
  rs.callMethod("addFile",[new JsObject.fromBrowserObject(file)]);
});