File upload dart上载文件输入类型文件

File upload dart上载文件输入类型文件,file-upload,go,dart,dart-html,File Upload,Go,Dart,Dart Html,使用Dart和Golang开发一个小应用程序,并希望将文件上传到服务器 找到类似的内容并将其放在.dart文件中: InputElement uploadInput = query('#file'); // my input type file uploadInput.on.change.add((e) { // read file content as dataURL final files = uploadInput.files; if (files.lengt

使用Dart和Golang开发一个小应用程序,并希望将文件上传到服务器

找到类似的内容并将其放在.dart文件中:

InputElement uploadInput = query('#file'); // my input type file

  uploadInput.on.change.add((e) {
    // read file content as dataURL
    final files = uploadInput.files;
    if (files.length == 1) {
      final file = files[0];
      final reader = new FileReader();
      reader.on.load.add((e) {
       sendDatas(reader.result);
      });
      reader.readAsDataURL(file);
    }
  });
但是得到以下错误:

Uncaught TypeError: Cannot read property 'get$on' of null 
你知道怎么处理吗


我的目标是:使用输入类型文件上传文件到服务器(文件大小,<1MB)

这种语法大约在一年前就改变了

试试看

uploadInput.onChange.listen((e){
同样的变化在这里也是必要的

reader.onLoad.listen((e){
xxx.on…
语法仅适用于Dart还没有直接getter的自定义事件或浏览器事件

这也适用于标准浏览器事件

uploadInput.on['change'].listen((e)=>doSomething());

最后更改了代码,这是最后的工作功能,使用DART上载文件:

updatefileToPlay(Event e, dynamic data, FileUploadInputElement el) {

    final files = el.files;
        if (files.length == 1) {
          final file = files[0];
          final reader = new FileReader();

          reader.onLoad.listen((e) {

            FormData data = new FormData(); // from dart:html
                data.append("file", file);

                HttpRequest.request('/upload?id='+message.id, method: 'POST', sendData: data).then((HttpRequest r) {
                  if (r.readyState == HttpRequest.DONE &&
                      (r.status == 200 || r.status == 0)) {
                    window.alert("upload complete");
                  }
                });
          });
          reader.readAsDataUrl(file);
        }
  }

嗨,伙计,谢谢你的回复。现在我得到了这样的结果:未捕获类型错误:无法读取Null的“get$onChange”属性。在执行这一行之前,请检查
uploadInput
是否有值?它没有。哦,它需要
@observable uploadInput=0
?我错过了这个。你应该使用
querySelector
而不是
query
(但是
query
应该也能用,我想,但是它被标记为
@弃用了大约一年,我从未尝试过)。你使用聚合物吗?
@observable
通常用于聚合物元素。它也可以单独使用,但你的代码没有指明任何方向。检查你的输入元素是否有id
文件
。我不知道你所说的“我的输入有
\35file
”是什么意思。你的输入元素需要看起来像
id=“file”
是使用
querySelector('#file');
的重要部分。您也可以使用
querySelector('input[type=file');
则不需要id属性。您可以将CSS选择器与
querySelector()
一起使用(请参阅)你到底想做什么?也许你正在寻找我只有一个输入类型的文件,我想添加一个文件并发布到服务器。
参数类型“file”不能分配给参数类型“String”。dartargument\u type\u not\u assignable'