Flutter:通过API函数上传图像错误



我正在尝试通过API从我的应用程序上传图像和一些数据,我的控制台中没有错误,我不知道我的功能出了什么问题。这是我使用的代码:

upload(File imageFile) async {
var user =
Provider.of<LoginUserProvider>(context, listen: false).userData.data;
DateFormat formater = DateFormat('yyyy-MM-dd');
String formatted = formater.format(dateTime);
var stream =
// ignore: deprecated_member_use
new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
var length = await imageFile.length();
var headers =
Provider.of<LoginUserProvider>(context, listen: false).httpHeader;
var uri = Uri.parse(
"xyz");
var request = new http.MultipartRequest("POST", uri);
request.headers.addAll(headers);
//request.headers.addAll(Environment.requestHeaderMedia);
var multipartFile = new http.MultipartFile(
'attachment',
stream,
length,
filename: imageFile.path,
contentType: MediaType('application', 'x-tar'),
);
request.fields['section_id'] = VillaID.toString();
request.fields['date'] = formatted;
request.fields['description'] = descriptionController.text;
request.files.add(multipartFile);
var response = await request.send();
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});
try {
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
print(json.decode(response.body));
final responseData = json.decode(response.body) as Map<String, dynamic>;
if (response.statusCode == 200 || response.statusCode == 201) {
return true;
}catch (error) {
print(error);
return false;
}
return true;
}

所以有人能帮我解决我的问题吗!

您发送了两次相同的请求

第一次

var response = await request.send();

第二次

final streamedResponse = await request.send();

在发送相同的请求之前,请重新创建它们。

关于您的代码,您不需要再次创建响应。在其他地方使用第一个。

最新更新