DART post with multipart/form-data

2019-01-26 21:54发布

问题:

in DART lang, how to specify POST request Content-Type to be

multipart/form-data

My DART code is:

sendDatas(dynamic data) {
final req = new HttpRequest();
req.onReadyStateChange.listen((Event e) {
  if (req.readyState == HttpRequest.DONE &&
      (req.status == 200 || req.status == 0)) {
    window.alert("upload complete");
  }
});
req.open("POST", "/upload");
req.send(data);

}

I am doing POST with a file

回答1:

I think you should use HttpRequest.postFormData(url, data) here. Then you can use the following:

FormData data = new FormData(); // from dart:html

data.append(key, value);

HttpRequest.request('/upload', method: 'POST', sendData: data).then((HttpRequest r) {
  // ...
});

Regards, Robert



回答2:

On the server it is supported by the http package. This package can also be used in the browser but it seems the multipart_request.dart file can't be imported in the browser because it uses dart:io;

I suggest creating a feature request on http://dartbug.com/new.

You could also try to copy the code from the [http] package and remove the references to the io package and use browser API instead.

How it could be used on the server is shown here http://www.dartdocs.org/documentation/http/0.11.1+1/index.html#http/http.MultipartRequest