bounty将在5天后过期。此问题的答案可获得+50声望奖励。who-aditya-nawandar正在寻找此问题的更详细答案:到目前为止没有任何工作。我一直得到相同的错误“Null”不是类型转换中类型InstanceRef的子类型。如果您已经成功将文件上传到Flutter Web中的API,请帮助我。
uploadFiles() async {
///
try {
var token =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIyIiwibmJmIjoxNjc5MzgzMTY5LCJleHAiOjE2NzkzODQ5NjksImlhdCI6MTY3OTM4MzE2OX0.HL5Y39p0cxpbuOhbls-hjq2Nu_xnVGAJ4qacESp1yNw';
var url =
Uri.parse("my_url");
var request = http.MultipartRequest('POST', url);
Map<String, String> headers = {
"Authorization": "Bearer $token",
"Content-type": "multipart/form-data"
};
request.headers.addAll(headers);
request.fields
.addAll({"facility_id": "46", "module_id": "3263", "id": "1"});
for (var file in files) {
var reader = html.FileReader();
reader.readAsArrayBuffer(file);
var completer = Completer<List<int>>();
bool _isCompleted = false; // add this flag
reader.onLoadEnd.listen((event) {
if (!_isCompleted) {
// check if already completed
_isCompleted = true;
completer.complete(reader.result as List<int>);
}
});
var filename = file.name;
var multipartFile = http.MultipartFile.fromBytes(
'file',
(await completer.future),
filename: filename,
);
request.files.add(multipartFile);
}
var response = await request.send();
if (response.statusCode == 200) {
print('Upload successful');
} else {
print('Upload failed');
}
} //
catch (e) {
print(e);
}
}
我试图将文件(自在Web上工作以来的HTML文件)发布到API。我收到一个错误,说'Null'不是类型转换中InstanceRef类型的子类型。我不知道是什么导致了这一点。代码中的一切似乎对我来说都很好。
2条答案
按热度按时间tzcvj98z1#
对于文件上传,您应该使用
"Content-type": "multipart/form-data"
发送yzuktlbb2#
有两种可能的方法
1 -多部分2 -Base64解码
在这里,您使用fileupload!.files.single.path上传文件
另一种方法是使用Base64
在这里你正常调用API