Как отправлять составные HTTP-запросы из браузера с помощью Dart

Мне нужно загрузить изображение из браузера в мой веб-API RESTful, реализованный с использованием Python Eve. Из документации требуется отправить запрос на составную/форму данных. (http://python-eve.org/features.html#file-storage). Есть библиотека 'dart:http', которая может это сделать. Но для этого требуется «dart: io», который недоступен в браузере. Итак, я могу отправить запрос из браузера?

Спасибо за любую помощь.


person Thanapon Soo    schedule 29.07.2014    source источник
comment
dartlang.org/articles/json-web-service   -  person JAre    schedule 30.07.2014


Ответы (2)


Вы можете просто использовать что-то вроде этого:

FormData formData = new FormData();
formData.append('image', '...');
HttpRequest.request('url', method: 'post', sendData: formData).then((HttpRequest request) {
  // ...
});

Это должно установить правильный mimeType. Если нет, вы можете установить его с помощью параметра mimeType.

С уважением, Роберт

person Robert    schedule 30.07.2014

На стороне клиента библиотека dart:html должна помочь. Что-то вроде этого (источник):

import 'dart:html';

main() {
  InputElement uploadInput = query('#upload');
  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);
    }
  });
}

/// send data to server
sendDatas(dynamic data) {
  final req = new HttpRequest();
  req.on.readyStateChange.add((Event e) {
    if (req.readyState == HttpRequest.DONE &&
        (req.status == 200 || req.status == 0)) {
      window.alert("upload complete");
    }
  });
  req.open("POST", "http://127.0.0.1:8080/upload");
  req.send(data);
}
person Nicola Iarocci    schedule 30.07.2014