2014-08-29 84 views
1

将Dart和Golang用于一个小应用程序并希望将文件上载到服务器。dart上传文件输入类型文件

找到这样的事情并把它放在我的.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)

+0

你怎么想试试完成?也许你正在寻找http://stackoverflow.com/questions/13673030 – 2014-08-29 12:58:42

+0

我只是有一个输入类型的文件,我想添加一个文件并发布到服务器。 – bboy 2014-08-29 13:22:43

+0

,我是飞镖新手 – bboy 2014-08-29 13:26:03

回答

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); 
     } 
    } 
1

这句法已经改变了大约一年前。

尝试,而不是

uploadInput.onChange.listen((e) { 

相同的变化只为达特还没有直接的干将自定义事件或浏览器事件有必要在这里

reader.onLoad.listen((e) { 

xxx.on...语法。

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

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

嗨,感谢您的回复。现在我得到这样的事情: 未捕获TypeError:无法读取属性'get $ onChange'null – bboy 2014-08-29 12:43:55

+0

您可以请检查'uploadInput'是否有一个值之前执行此行吗? – 2014-08-29 12:47:07

+0

它没有。哦,它需要'@observable uploadInput = 0'? – bboy 2014-08-29 12:48:54

相关问题