2012-12-02 40 views
5

我想使用FormData类来发送数据到我的服务器与HttpRequest.send()。我需要做多个字段的POST请求。它应该和这个Javascript代码一样工作:如何动态文件输入在DART添加到FORMDATA?

//Upload File 
var uploadFile = function(file, tag, callback) 
{ 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', "upload/", true); 
    xhr.onreadystatechange=function() 
    { 
     if (xhr.readyState==4 && xhr.status==200) 
     { 
      callback(); 
     } 
    } 
    var formData = new FormData(); 
    formData.append('file', file); 
    formData.append('tag', tag); 
    var csrftoken = $.cookie('csrftoken'); 
    xhr.setRequestHeader("X-CSRFToken", csrftoken); 
    xhr.send(formData); 
}; 

但是FormData在Dart中似乎没有相同的工作方式。如果可能的话,有人可以解释在Dart中如何做到这一点吗?

+1

我已经打开错误http://code.google.com/p/dart/issues/detail?id=7152跟踪这一请求。你可以请明星错误通知? –

回答

2

你必须使用FormData.appendBlob

void uploadFile(File file, String tag, callback) { 
    final xhr = new HttpRequest(); 
    xhr.open('POST', "upload/", true); 
    xhr.on.readyStateChange.add((e) { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     callback(); 
    } 
    }); 
    final formData = new FormData(); 
    formData.appendBlob('file', file); 
    formData.append('tag', tag); 
    xhr.send(formData); 
};