Flutter 中使用 Http Post 上传正文
Posted
技术标签:
【中文标题】Flutter 中使用 Http Post 上传正文【英文标题】:Using Http Post to upload a Body of Text in Flutter 【发布时间】:2019-09-19 16:52:17 【问题描述】:我正在尝试创建一个发送图像文件和文本的 http.post 请求。我认为我只是向服务器发送了部分请求并且它被拒绝了。我已经在 MultiPartForm 和下面的方法中尝试过这个
我已尝试创建发布请求,但出现此错误:未处理的异常:类型“_File”不是类型转换中“字符串”类型的子类型
void createPreferences(
String phone,
String nickName,
String customerType,
double age,
File currentSelfie)
//Variables
var uri = Uri.http('10.0.2.2:8000', '/api/customer/create_customer_details/', params);
var params =
'access_token': _accessTkn,
;
final Map<dynamic, dynamic> custPreferences =
'phone': phone,
'nick_name': nickName,
'customer_type': customerType,
'age': '$'age'',
;
var request = http.MultipartRequest("POST", uri,);
var multipartFile = new http.MultipartFile('current_selfie', stream, length,
filename: basename(currentSelfie.path));
request.files.add(multipartFile);
var response = await request.send();
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value)
print(value);
);
final Map<String, dynamic> responseData = json.decode(response.body);
print(responseData);
print('Response body: $response.body');
);
我想创建这个请求并验证我的数据是否被我的服务器接受。
【问题讨论】:
HTTP POST with Json on Body - Flutter/Dart的可能重复 Flutter: http post upload an image的可能重复 【参考方案1】:您可以做的是将您的文件(图像)转换为 base64 并将其作为字符串示例上传:
import 'dart:convert';
void createPreferences(
String phone,
String nickName,
String customerType,
double age,
File currentSelfie)
//Variables
var url = 'http://10.0.2.2:8000/api/create_customer_details/?';
final Map<dynamic, dynamic> custPreferences =
'phone': phone,
'nick_name': nickName,
'customer_type': customerType,
'age': '$'age'',
'current_selfie': base64Encode(currentSelfie.readAsBytesSync()),
'access_token': _accessTkn,
;
http.post(url, body: custPreferences, headers:
"Content-Type": "application/x-www-form-urlencoded"
).then((http.Response response)
print(response);
final Map<String, dynamic> responseData = json.decode(response.body);
print(responseData);
print('Response body: $response.body');
);
然后在你的服务器中解码它。
【讨论】:
我收到此错误:无法将参数类型“文件”分配给参数类型“列表以上是关于Flutter 中使用 Http Post 上传正文的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 中使用 Flutter 和 php 上传图片
Flutter DIO:使用带有 Dio 包的二进制体上传图像
Flutter:我正在使用 post api 将文件上传到数据库。但它给了我一个错误