2012-12-02 2 views
5

Ich versuche, die FormData-Klasse zu verwenden, um Daten mit HttpRequest.send() an meinen Server zu senden. Ich muss eine POST-Anfrage mit mehreren Feldern machen. Es soll das gleiche wie dieser Javascript-Code arbeiten:Wie füge ich dynamisch eine Dateieingabe zu FormData in Dart hinzu?

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

Aber Formdata scheint nicht die gleiche Art und Weise in Dart zu arbeiten. Könnte jemand erklären, wie man das in Dart macht, wenn es möglich ist?

+1

Ich habe http://code.google.com/p/dart/issues/detail?id=7152 geöffnet Fehler Anfrage zu verfolgen. Kannst du bitte den Bug markieren, um benachrichtigt zu werden? –

Antwort

2

Sie haben FormData.appendBlob zu verwenden:

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); 
}; 
Verwandte Themen