You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 6, 2021. It is now read-only.
In http_body_impl.dart class HttpBodyHandlerImpl method process, the following code only retrieves the last key value pair:
Future<HttpBody> asFormData() {
return stream
.transform(new MimeMultipartTransformer(
contentType.parameters['boundary']))
.map((part) => HttpMultipartFormData.parse(
part, defaultEncoding: defaultEncoding))
.map((multipart) {
var future;
if (multipart.isText) {
future = multipart
.fold(new StringBuffer(), (b, s) => b..write(s))
.then((b) => b.toString());
} else {
future = multipart
.fold(new BytesBuilder(), (b, d) => b..add(d))
.then((b) => b.takeBytes());
}
return future.then((data) {
var filename =
multipart.contentDisposition.parameters['filename'];
if (filename != null) {
data = new _HttpBodyFileUpload(multipart.contentType,
filename,
data);
}
return [multipart.contentDisposition.parameters['name'], data];
});
})
.fold([], (l, f) => l..add(f))
.then(Future.wait)
.then((parts) {
Map<String, dynamic> map = new Map<String, dynamic>();
for (var part in parts) {
map[part[0]] = part[1]; // Override existing entries.
}
return new _HttpBody('form', map);
});
Would prefer something like this, to return value as a List when key is found multiple times. Understand that this may cause a breaking change depending upon form input.
Future<HttpBody> asFormData() {
return stream
.transform(new MimeMultipartTransformer(
contentType.parameters['boundary']))
.map((part) => HttpMultipartFormData.parse(
part, defaultEncoding: defaultEncoding))
.map((multipart) {
var future;
if (multipart.isText) {
future = multipart
.fold(new StringBuffer(), (b, s) => b..write(s))
.then((b) => b.toString());
} else {
future = multipart
.fold(new BytesBuilder(), (b, d) => b..add(d))
.then((b) => b.takeBytes());
}
return future.then((data) {
var filename =
multipart.contentDisposition.parameters['filename'];
if (filename != null) {
data = new _HttpBodyFileUpload(multipart.contentType,
filename,
data);
}
return [multipart.contentDisposition.parameters['name'], data];
});
})
.fold([], (l, f) => l..add(f))
.then(Future.wait)
.then((parts) {
Map<String, dynamic> map = new Map<String, dynamic>();
for (var part in parts) {
if (map[part[0]] == null) {
map[part[0]] = part[1];
}
else {
var partvalue = map[part[0]];
if (partvalue is String) {
List<String> listvalue = new List<String>();
listvalue.add(map[part[0]]);
listvalue.add(part[1]);
map[part[0]] = listvalue;
}
else {
partvalue.add(part[1]);
map[part[0]] = partvalue;
}
}
}
return new _HttpBody('form', map);
});
The text was updated successfully, but these errors were encountered:
In http_body_impl.dart class HttpBodyHandlerImpl method process, the following code only retrieves the last key value pair:
Would prefer something like this, to return value as a List when key is found multiple times. Understand that this may cause a breaking change depending upon form input.
The text was updated successfully, but these errors were encountered: