在Dart的货架后端接收文件



我使用以下代码从前端发布一个文件:

final request =MultipartRequest('GET', Uri.parse('http://192.168.0.8:8080/sendfile'));
request.files.add(await MultipartFile.fromPath('fromFilePath', 'file.pdf'));
StreamedResponse response = await request.send();

然后,尝试在机框后端使用以下代码解码此请求:

FutureOr<Response> fileHandler(Request request) async {
try {
final _body = await request.readAsString(); //! stacked here
final _map = jsonDecode(_body);

List<dynamic> _fromFilePath = [];
_fromFilePath.add(_map['fromFilePath']);
return Response.ok('Success');
} catch (_) {
return Response.internalServerError(body: 'Internal Server Error');
}
}

因此,我的问题是,如何解码请求中的文件?

我不确定。我使用的是shelf_router,但此方法也使用Request request。我的代码看起来像这样。

..post("/test", (Request request) async {
Map data = {}, files = {};
final List<FormData> formDataList = await request.multipartFormData.toList();
for (FormData formData in formDataList) {
if (formData.filename == null) {
String dataString = await formData.part.readString();
data[formData.name] = jsonDecode(dataString);
} else if (formData.filename is String) {
files[formData.name] = await formData.part.readBytes();
}
}
print(data);
print(files.keys);
return Response.ok("test");
})

在我的请求中,我使用form-data并使用request.files.addAll(fileList);传递这些文件

我希望这将帮助你:(

最新更新