将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)
答案 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);
}
}