我正在开发Telegram Bot,我需要通过POST发送文件作为用户的附件(例如.txt文件)。在此之后,我有两个问题:
拥有正确的文件类型,如何将其作为参数发送 网址POST?我尝试了http库和内置解决方案。
以下是我现在正在使用的代码片段:
Future<dynamic> sendRequest(String method, url, {json}) async {
BaseClient bs = new IOClient();
var request = new Request(method, url);
request.headers['Content-Type'] = 'application/json';
request.body = JSON.encode(json);
var streamedResponse = await bs.send(request);
var response = await Response.fromStream(streamedResponse);
var bodyJson;
try {
bodyJson = JSON.decode(response.body);
} on FormatException {
var contentType = response.headers['content-type'];
if (contentType != null && !contentType.contains('application/json')) {
throw new Exception(
'Returned value was not JSON. Did the uri end with ".json"?');
}
rethrow;
}
if (response.statusCode != 200) {
if (bodyJson is Map) {
var error = bodyJson['error'];
if (error != null) {
throw error;
}
}
throw bodyJson;
}
return bodyJson;
}
有什么想法吗?
答案 0 :(得分:1)
我推断您使用的是Dart Pub http
包。简要地看一下文档,它似乎支持多部分和流上传。请参阅MultipartRequest
和StreamedRequest
课程。 (我自己没有使用这些,但它们看起来很简单。)
https://www.dartdocs.org/documentation/http/0.11.3%2B9/http/http-library.html
此问题可能有助于理解HTTP multipart/form-data
文件上传。 How does HTTP file upload work?。其他人可能能够指出流媒体上传的良好资源。