Dart:根据客户端请求在服务器上处理上载的文件

Dart:根据客户端请求在服务器上处理上载的文件,dart,image-uploading,Dart,Image Uploading,我正在尝试处理从服务器上的客户端上载的图像,但收到以下错误。我是否处理了httpRequest错误 未处理的异常: 未捕获错误:HttpException:接收数据时连接关闭,uri=/api/upload ///客户代码(dart文件)(Works@sending request) 我有一个小型服务器监听请求(/api/upload)并调用handleUploadRequest,其中httpRequest作为参数传入 服务器代码(这就是我被卡住的地方) Future handleUploadR

我正在尝试处理从服务器上的客户端上载的图像,但收到以下错误。我是否处理了httpRequest错误

未处理的异常:

未捕获错误:HttpException:接收数据时连接关闭,uri=/api/upload

///客户代码(dart文件)(Works@sending request)

我有一个小型服务器监听请求(/api/upload)并调用handleUploadRequest,其中httpRequest作为参数传入

服务器代码(这就是我被卡住的地方)

Future handleUploadRequest(最终HttpRequest-HttpRequest)异步{
httpRequest.fold(newbytesbuilder(),(b,d)=>b..add(d))。然后((builder){
var data=builder.takeBytes();
打印('字节生成器:${data}');
});
}
我试图读取数据,以便将其存储在cdn上,但从未有机会读取,因为在接收数据时连接总是关闭


任何能够完成此任务的帮助都将不胜感激。在过去的几天里,我们一直在这样做:///p>很难说您何时/是否关闭了httpRequest。如果您在handleUploadRequest返回后立即执行此操作,它确实会关闭连接,因为您没有等待
httpRequest.fold()
完成。如下图所示添加wait并确保在异步完成此函数后调用httpRequest.close(),应该可以工作

Future<Null> handleUploadRequest(final HttpRequest httpRequest) async {
   await httpRequest.fold(new BytesBuilder(), (b, d) => b..add(d)).then((builder) {
     var data = builder.takeBytes();
     print('bytes builder: ${data}');
   });
}
Future handleUploadRequest(最终HttpRequest-HttpRequest)异步{
等待httpRequest.fold(newbytesbuilder(),(b,d)=>b..add(d)),然后((builder){
var data=builder.takeBytes();
打印('字节生成器:${data}');
});
}

(仅供参考)我有一个类似的代码,可以在使用curl进行测试和上传文件时使用。

感谢您发现了这个问题!:)你介意和curl分享一个你需要工作的例子吗?许多人可能也在想。哦,上传时服务器终于没有崩溃!现在我计划将上传的文件存储在cdn上。我使用的简单curl命令是:curl-I-F name=my_file\u name-F filedata=@/path/to/local/file
Future<Null> handleUploadRequest(final HttpRequest httpRequest) async {
   httpRequest.fold(new BytesBuilder(), (b, d) => b..add(d)).then((builder) {
     var data = builder.takeBytes();
     print('bytes builder: ${data}');
   });
}
Future<Null> handleUploadRequest(final HttpRequest httpRequest) async {
   await httpRequest.fold(new BytesBuilder(), (b, d) => b..add(d)).then((builder) {
     var data = builder.takeBytes();
     print('bytes builder: ${data}');
   });
}