dart上传文件输入类型文件

时间:2014-08-29 12:29:34

标签: 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.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)

2 个答案:

答案 0 :(得分:1)

这种语法在一年前发生了变化。

尝试改为

uploadInput.onChange.listen((e) {

这里需要进行同样的改变

reader.onLoad.listen((e) {

xxx.on...语法仅适用于Dart尚未拥有直接获取者的自定义事件或浏览器事件。

这也适用于标准浏览器事件。您可以像

一样使用它
uploadInput.on['change'].listen((e) => doSomething());

答案 1 :(得分:0)

最后更改了代码,这是最终的工作函数,使用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);
        }
  }