2014-08-29 97 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

相關問題