Web Dart文件上传:更大的文件不是';我没有完全上传

Web Dart文件上传:更大的文件不是';我没有完全上传,web,server,dart,Web,Server,Dart,我用dart实现了一个文件上传。 我的客户就是这样做的: Future upload(String url, File file){ Completer completer = new Completer(); FileReader fileReader = new FileReader(); fileReader.onLoad.listen((e){ HttpRequest request = new HttpRequest(); Map<

我用dart实现了一个文件上传。 我的客户就是这样做的:

Future upload(String url, File file){
    Completer completer = new Completer();
    FileReader fileReader = new FileReader();
    fileReader.onLoad.listen((e){
      HttpRequest request = new HttpRequest();
      Map<String,String> headers = createHeaders();
      request.open('POST',url);
      for(String key in headers.keys){
        request.setRequestHeader(key,headers[key]);
      }
      request.send(fileReader.result);
    });
    fileReader.onLoadEnd.listen((e)=>completer.complete());
    fileReader.readAsArrayBuffer(file);
    return completer.future;
  }

对于小文件,一切正常,但当我尝试上传一个更大的文件时,在我的测试用例中大约20MB,服务器上只保存了一些MB。有人知道这些字节在哪里丢失了吗?

writeAsByteSync将截断任何现有文件,因此实际上,最后接收到的数据将被写入,以前接收到的数据将被擦除。您可以先尝试创建文件,然后使用参数
mode:FileMode.APPEND
for
writeAsByteSync
writeAsByteSync
将截断任何现有文件,因此实际上,最后接收的数据将被写入,之前接收的数据将被擦除。您可以尝试先创建文件,然后使用参数
mode:FileMode.APPEND
for
writeAsByteSync

查看服务器上的
request.listen()
是否会在某个点抛出错误。尝试在那里添加OneError处理程序。在客户端也一样:尝试hanlde
fileReader.onError
这是一个好主意,但没有错误处理程序被命中。看看服务器上的
request.listen()
是否在某个时候抛出错误可能会很有趣。尝试在那里添加OneError处理程序。客户端也一样:尝试使用hanlde
fileReader.onError
这是一个好主意,但是没有错误处理程序被命中。非常感谢这就是问题。非常感谢这就是问题所在
 Future saveFileContent(String fileId,   HttpRequest request)async{
    Completer completer = new Completer();
    File file = new File('${pathResolver.files}/${fileId}');
    await file.create(recursive: true);
    request.listen((data){
      file.writeAsBytesSync(data);
    },onDone: (){
      completer.complete();
    });
    return completer.future;
  }